TypeScript의 유틸리티 타입 (3)

eeensu·2024년 1월 21일
0

typescript

목록 보기
20/22
post-thumbnail

Exclude<T, ExcludedUnion>

Exclude 타입은 첫 번째 인자로 전달된 유니온 타입 Type에서 두 번째 인자로 전달된 유니온 타입 ExcludedUnion에 속하는 타입들을 제외한 타입을 생성한다. Omit 과의 차이점으로는, Omit은 객체의 속성을 제외하고자 할 때 사용되고, Exclude는 유니온 타입에서 특정 값을 제외하고자 할 때 사용된다.

type Grade = 'A' | 'B' | 'C' | 'D' | 'E';
type ExcludedGrade = Exclude<Grade, 'A' | 'B'>;		// 'A', 'B'는 제외

const grade: ExcludedGrade = 'C'; 					// 'C', 'D', 'E'만 선택 가능


Extract<Type, Union>

Extract 타입은 첫 번째 인자로 전달된 유니온 타입 Type에서 두 번째 인자로 전달된 유니온 타입 Union에 속하는 타입들만 추출하여 새로운 타입을 생성한다. Exclude와는 반대이다.

type MyType = Extract<'a' | 'b' | 'c', 'a' | 'b'>;
// 결과: type MyType = "a" | "b"

주의사항

Extract는 유니언 타입에서 특정 타입을 추출하는 역할을 한다. 객체의 속성을 추출하려고 할 때, Extract는 해당 객체 타입을 추출하지 않으며, 원본 그대로 유지됩니다. 객체의 특정 속성을 추출하려면 Pick 유틸리티 타입을 사용해야 한다.

type MyType = { prop1: string; prop2: number; prop3: boolean };

// 객체의 특정 속성을 추출하려면 Pick을 사용해야 함
type PickedType = Pick<MyType, 'prop1'>;

const value: PickedType = {  
    prop1: 'hello'
};

const otherValue: PickedType = {
  	prop1: 'hi',
};			


NonNullable<T>

NonNullable 타입은 주어진 타입 Type에서 nullundefined를 제외한 모든 타입을 유지시키는 기능이다.

type AllPossibleGrades = 'Dave' | 'John' | null | undefined;
type NamesOnly = NonNullable<AllPossibleGrades>			// null과 undefined가 제외됨

const value: NamesOnly = null; 							// error
profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글