Functions

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

function add(a: number, b: number): number {
    return a + b
}

function test(_:number): void {}

// _ β€” это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΌΡ‹ это Π·Π½Π°Π΅ΠΌ

function test(): number & string {}  // это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вСрнСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ Π±ΡƒΠ΄ΡƒΠ΄Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ number ΠΈ Ρ‚ΠΈΠΏ string

// ОписаниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния:
interface ILength {
    length: number
}

function withCount<T extends ILength>(value: T): {value: T, count: string} {
    return {
        value,
        count: `Count: ${value.length}`
    }
}

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

interface MyPosition {
    x: number | undefined
    y: number | undefined
}

interface MyPositionWithDefault extends MyPosition {
    default: string
}

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ способы Π²Ρ‹Π·ΠΎΠ²Π°
function position(): MyPosition
function position(a: number): MyPositionWithDefault
function position(a: number, b: number): MyPosition

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ саму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
function position(a?: number, b?: number) {
    if (!a && !b) {
        return {x: undefined, y: undefined}
    }
    
    if (a && !b) {
        return {x: a, y: undefined, default: a.toString()}
    }
    
    return {x: a, y: b}
}

Lambda

const split = (a: string, s: string): string[] => a.split(s)

Last updated