Pandaman Blog

[Typescript] Utility Types - 2 본문

Front end/Typescript

[Typescript] Utility Types - 2

oyg0420 2022. 3. 27. 11:41

6. Exclude

Exclude<UnionType, ExcludedMembers>UnionType중에서 ExcludedMembers를 제외한 타입을 반환한다.
링크

즉 아래와 같다.

type Person = {
    name: string;
    age: number;    
}

type PersonExcludeName = Exclude<keyof Person, 'name'>;
type PersonExcludeAge = Exclude<keyof Person, 'age'>;

한번 확인해보자.

type Exclude<U, E> = U extends E ? never : U;

U extends E ? never : U 표현은 타입스크립트에서 Conditional Type 이라고 한다. UE를 extends 하고 있다면 never를 반환(생략)하고 아닐 겨우 타입 U를 반환한다.

7. Extract

type Extract<T, U> = T extends U ? T : never;

타입 매개변수 U를 T에서 추출하는 타입이다.

예를 들어

type MixedArgs = string | number | () => string | () => number
type FunctionArgs = Extract<MixedArgs, Function>

첫번째 타입매개변수는 함수, string 또는 number 타입으로 구성된 유니온타입이다. 두번째 매개변수 Function 타입이다.

type FunctionArgs = MixedArgs extends Function ? MixedArgs : never;

즉, 타입 Functionextends 하는 () => string | () => number 만을 반환한다.

8. NonNullable

type NonNullable<T> = T extends null | undefined ? never : T;

NonNullable타입은 타입매개변수 Tnull 또는 undefined는 제외한 나머지 타입을 반환하는 타입이다.

type PhoneNumberTypes = number | number[] | null | undefined; 
type NonNullableEmailAddress = NonNullable<PhoneNumberTypes>; 
// number | number[];

결과 타입이 반환되는 과정에 대한 자세한 설명은 이전글 Conditional Types에서 확인할 수 있습니다.

9. ReturnType

'Front end > Typescript' 카테고리의 다른 글

[Typescript] Conditional Types  (0) 2022.03.13
[Typescript] Mapped Types  (0) 2022.02.24
[Typescript] Utility Types - 1  (0) 2022.02.21
[Typescript] 함수  (0) 2021.12.19
[Typescript] Type Guard  (0) 2021.12.18
Comments