Tech/TypeScript
[ TS 기초 ] 함수 - Call signiture / 오버로딩 / 제너릭
닝닝깅
2023. 3. 21. 16:09
Call signiture
Call signiture은 코드에 마우스를 올리면 나오는 타입 정보이다.
type Add = (a: number, b: number) => number;
const add: Add = (a, b) => a + b;
함수를 만들기 전 직접 call signiture를 만들어서 type를 미리 선언한 후
Overloading
하나의 함수가 여러개의 call signiture를 가지고 있을 때 발생한다.
동일한 이름의 함수에서 파라미터만 달라지고 비슷한 로직이 반복될 때 사용된다.
함수 내에서 파라미터의 타입에 맞게 각각 구현한다.
파라미터의 개수가 같을 때
type Add = {
(a: number, b: number): number;
(a: number, b: string): number;
};
const add: Add = (a, b) => {
if (typeof b === "string") return a;
else return a + b;
};
파라미터의 개수가 다를 때
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
};
Generics
call signiture를 선언할 때 타입을 잘 모를 때 제너릭을 사용한다.
타입스크립트가 타입을 유추한다.
type SuperPrint = {
<T>(arr: T[]): T;
};
const superPrint: SuperPrint = (arr) => arr[0];

제네릭을 선언하고 처음 사용되는 지점에서 제네릭의 타입이 정해진다 .
type Player<E> = {
name: string;
extraInfo: E;
};
type Extra = {
favFood: string
}
type MyPlayer = Player<Extra>