본문 바로가기

Javascript/Typescript11

[Typescript] 함수 오버로딩 // 선언부 function add(x:string, y:string): string function add(x:number, y:number): number // 구현부 function add(x:any, y:any): any { return x+y; } add('ggg','bbb'); add(12, 34); add('hi', 2) // Error add(3, 'good') // Error TS에서 함수는 보기와 같이 선언부와 구현부를 나눠서 오버로딩할 수 있음 2023. 11. 12.
[Typescript] this 타입 interface Book { name: string } function greet(this: Book, msg: string) { return `${this.name}, ${msg}` } TS 에서 this타입을 정의할 때 함수의 첫번째 인자로 this를 넣으면 this는 예약어이기 때문에 매개변수 중 하나로 인식을 안하고 this의 타입을 설정할 수 있다. 2023. 11. 12.
[Typescript] 인덱스 시그니처 interface Animal { [key: string] : string | number // index signature name: string; age: number; } const animal: Animal = { name: 'dog', age: 85 } interface Payload {[key: string]: unknown} // index signature function getValues(payload: Payload) { if(payload && payload.constructor === Object) { return Object.keys(payload).map(key => payload[key]) } } getValues(animal); index 가능 타입은 인덱스 시그니처를 명시해.. 2023. 11. 12.
[Typescript] class 타입과 생성 시그니처 interface UserI { name: string; getName(): string; } // 생성 시그니처 (construct signature) interface UserInter { new (n: string): UserI; } // type로는 아래와 같이 생성 가능 type UserType = new (n: string) => UserI; type UserFunc = { new (n: string): UserI; }; class User implements UserI { public name; constructor(name: string) { this.name = name; } getName(): string { return this.name; } } class에 사용되는 변수와 metho.. 2023. 11. 12.