Utility Types
Pick<Type, Keys>
지난 시간에 Record<Keys, Type>을 이용해 하나의 타입을 만들었다면, Pick을 사용하면 type에서 key 값에 해당하는 타입을 가져올 수 있습니다.
interface Some {
name: string;
age: number;
gender: boolean;
}
type Thing = Pick<Some, 'name' | 'gender'>;
const test: Thing = { name: '', gender: true };
Omit<Type, Keys>
Pick과 반대로 지정된 key를 제외한 나머지 타입을 가져올 수 있습니다.
interface Some {
name: string;
age: number;
gender: boolean;
}
type Thing = Omit<Some, 'name' | 'gender'>;
const test: Thing = { age: 29 };
Exclude<UnionType, ExcludedMembers>
단어 의미 그대로 유니온 타입에서 제외할 멤버를 고를 수 있습니다.
type Some = 'a' | 'b' | 'c' | 10;
type T = Exclude<Some, 10>; // type: 'a' | 'b' | 'c'
Extract<Type, Union>
타입에서 제시된 유니온이 포함된 타입만 추출할 수 있습니다.
type Some = 'a' | 'b' | 'c';
type T = Extract<Some, 'a' | 'd' >; // type: 'a'
type Thing = { name: 'nulzi', age: number } | { name: 'some', age: number } | { name: 'thing', age: number, gender: boolean };
type T2 = Extract<Thing, { name: 'nulzi' } // type: { name: 'nulzi', age: number }
NonNullable<Type>
유니온 타입에서 null과 undefined를 제외해 줍니다.
type Some = string | null;
type T = NonNullable<Some>; // type: string
Parameters<Type>
함수 타입인 Type의 파라미터에서 튜플 타입을 만들 수 있습니다. overload 된 함수를 위해서 사용한다고 하는 overload를 사용해 본 적이 없어서 아직 잘 모르겠습니다.
declare function f(a: number, b: string): void;
type T = Parameters<() => string>; // type: []
type T1 = Parameters<typeof f>; // type: [a: number, b: string]
참고
https://www.typescriptlang.org/docs/handbook/utility-types.html
'개발 > TS' 카테고리의 다른 글
| [TS] TS Doc Reference 1회독 (0) | 2025.07.16 |
|---|---|
| [TS] TS Doc Handbook 1회독 - 10 (0) | 2025.07.03 |
| [TS] TS Doc Handbook 1회독 - 9 (0) | 2025.06.24 |
| [TS] TS Doc Handbook 1회독 - 8 (0) | 2025.06.20 |
| [TS] TS Doc Handbook 1회독 - 7 (0) | 2025.06.17 |