Call Signatures
이름 위에 커서를 올렸을 때 뜨는 매개변수 타입 정보와 리턴 타입 정보
const add = (a:number,b:number) => a+b;
===> 분리
type Add = (a:number,b:number) => number; //Call Signatures
const add:Add = (a,b) => a+b; // 타입 별칭 사용
Over Loading
하나의 함수가 복수의 Call Signature를 가질 때 발생
- 매개변수의 데이터 타입이 다른 경우
type Add = {
(a: number, b: number): number,
(a: number, b: string): number
}
const add: Add = (a, b) => {
if(typeof b === "string") return a;
return a + b;
}
- 매개변수의 수가 다른 경우
type Add2 = {
(a: number, b: number): number,
(a: number, b: number, c: number): number
}
const add2: Add2 = (a, b, c?: number) => {
if (c) return a + b + c;
return a + b;
}
Generics(제네릭)
:타입을 함수의 파라미터처럼 사용하는 것
선언시점이 아닌 생성 시점에 타입을 명시해 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법으로
함수의 타입을 유연하고 재사용 가능하게 설계함
function getPrint<T>(text: T): T {
return text;
}
//함수 호출시 사용할 타입 넘김
getPrint<string>('hi');
getPrint<number>(10);
getPrint<boolean>(true);
type ArrPrint = {
<T>(arr:T[]):void
}
const arrPrint:ArrPrint = (arr)=>{
arr.forEach(i => console.log(i))
}
//타입유추해서Call Signatures 보여줌
arrPrint([1,2,3]) //<number>(arr: number[]) => void
arrPrint([true,false]) //<boolean>(arr: boolean[]) => void
type GetPrint = { <T,M>(a: T[],b:W): void }
type Player<T> = {
name: string,
extraInfo: T
};
const aaa: Player<{favFood:string}> = { //T에 대한 구체적인 타입을 제공
name: "aaa",
extraInfo: {
favFood: "egg"
}
}
const bbb: Plater<null> = {
name: "bbb",
extraInfo: null
}
'TypeScript' 카테고리의 다른 글
| [TypeScript] Enums(열거형) (0) | 2024.12.23 |
|---|---|
| [TypeScript] Class / Interface (0) | 2024.11.30 |
| [TypeScript] 기본타입 (0) | 2024.11.29 |
| [TypeScript] 타입 선언/ 별칭/ 옵션 (0) | 2024.11.28 |
| [TypeScript] 설치 및 환경 구축 (0) | 2024.11.27 |