본문 바로가기

개발/TS

[TS] TS Doc Reference 1회독 - 2

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