영역별/JavaScript

Ts: overloading

brandNuWs 2022. 5. 12. 22:47
// overloading

type Config = {
    path: string,
    state: number
}

type Push = {
    (path: string): void, // call signature을 다르게 표현하는 방법
    (config: Config): void // Config 타입을 오버로딩 해서 파라미터를 string(path) 하나만 받을 수도 있고 Config타입에 맞게 받을수 있음
}

const push: Push = (config) => {
    if (typeof config === "string") {
        console.log(config)
    } else {
        console.log(config.state)
    }
}

type Add = {
    (a:number, b:number) : number
    (a:number, b:number, c:number) :number,
    // 여러개의 call signature 보유 타입
}

const add:Add = (a, b, c?:number) => { 
//공통적이지만 가장 작은 수의 인자를 가지고 있는 call signature에서 추가적으로 더 인수가 들어온 callsignature의 인자는 optional로 함수호출시 지정해주어야한다
    if(c) return a+b+c
    return a+b
}

'영역별 > JavaScript' 카테고리의 다른 글

Ts: call signature  (0) 2022.05.12
Ts:세번째 변수  (0) 2022.05.12
Ts:두번째 변수  (0) 2022.05.12
Ts:변수의 지정 및 재사용  (0) 2022.05.12
Js:변수 및 호이스팅  (0) 2022.05.04