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 이라고 한다. U
가 E
를 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;
즉, 타입 Function
를 extends
하는 () => string | () => number
만을 반환한다.
8. NonNullable
type NonNullable<T> = T extends null | undefined ? never : T;
NonNullable
타입은 타입매개변수 T
중 null
또는 undefined
는 제외한 나머지 타입을 반환하는 타입이다.
type PhoneNumberTypes = number | number[] | null | undefined;
type NonNullableEmailAddress = NonNullable<PhoneNumberTypes>;
// number | number[];
결과 타입이 반환되는 과정에 대한 자세한 설명은 이전글 Conditional Types에서 확인할 수 있습니다.