call signatures and overloading and polymorphism

박동건·2022년 5월 26일

Typescript

목록 보기
2/3
post-thumbnail

타입스크립트의 또 다른 장점으로는 프로그램을 디자인하면서 타입을 먼저 생각하고, 그리고 나서 코드를 구현하게 된다는 것이다.

  • call signatures
type Add = (a: number, b: number) => number // 이러한 형태를 말함

const add: Add = (a,b) => a + b // 사용
  • overloading : 오버로딩은 함수가 여러개의 call signatures를 가지고 있을 때 발생시킨다.
    주로 라이브러리 같은 경우에 볼 수 있다. 아래는 실제 예시
// nextjs에서의 라우터 이동 방법 1
Router.push("/home")

// nextjs에서의 라우터 이동 방법 2
Router.push({
	path: "/home",
    state: 1
})

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

type Push = {
	(path: string):void // 라우터 이동 방법 1
    (config: Config):void // 라우터 이동 방법 2
}

const push: Push = (config) => {
	if(typeof config === 'string') {
    	console.log(config) // 라우터 이동 방법 1로 들어왔을 때,
    } else {
    	console.log(config.path, config.state) // 라우터 이동 방법 2로 들어왔을 때,
    }


// call signature들이 파라미터의 갯수가 다를 경우 (옵션 형태)

type Add = {
	(a: number, b: number) : number
    (a: number, b: number, c: number) : number
}

const add: Add = (a, b, c?: number) => {
	if(c) return a + b+ c
	return a + b
}    
profile
박레고의 개발 블로그

0개의 댓글