제네릭(Generic)
❗️사용시점에 타입선언 하기
T라고 쓰면 된다
function toArray<T>(a: T, b: T): T[] {
return [a, b];
}
사용시점에 타입 확정
toArray<number>(1, 2);
toArray<string>('1', '2');
toArray<string | number>(1, '2');
toArray<number>(1, '2'); // Error
인터페이스+제네릭
interface MyType<T> {
name: string,
value: T
}
extends
interface MyType<T extends string | number> {
name: string,
value: T
}
type+extends
type U = string | number | boolean;
// type 식별자 = 타입 구현
type MyType<T extends U> = string | T;
// interface 식별자 { 타입 구현 }
interface IUser<T extends U> {
name: string,
age: T
}
조건부 타입 (Conditional Type)
T extends U ? X : Y
T의 타입이 U인 경우 X, 아닐 경우 Y
type U = string | number | boolean;
// type 식별자 = 타입 구현
type MyType<T> = T extends U ? string : never;
// interface 식별자 { 타입 구현 }
interface IUser<T> {
name: string,
age: T extends U ? number : never
}
연속사용
type MyType<T> =
T extends string ? 'Str' :
T extends number ? 'Num' :
T extends boolean ? 'Boo' :
T extends undefined ? 'Und' :
T extends null ? 'Nul' :
'Obj';
+infer
T extends infer U ? X : Y
U가 추론 가능한 타입이라면 X, 아니면 Y
'TYPESCRIPT' 카테고리의 다른 글
타입스크립트: 유틸리티 타입 (0) | 2022.04.11 |
---|---|
타입스크립트: 모듈 (0) | 2022.04.11 |
타입스크립트: 함수, 클래스 (0) | 2022.04.10 |
타입스크립트: 인터페이스 (0) | 2022.04.08 |
타입스크립트 학습내용 정리 (0) | 2022.04.07 |