본문 바로가기

TYPESCRIPT

타입스크립트: 제네릭

 

 

 

제네릭(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