유틸리티 타입

Plato·2022년 7월 29일
0

서론

타입 스크립트는 전역에서 사용 가능한, 유용한 타입들을 만들어서, '유틸리티 타입'이라는 이름으로 제공한다. 유틸리티 타입을, 사용자가 만든 타입과 조합하면, 다양한 타입을 만들 수 있다. 자세히 살펴보자.

본론

Partial<객체 타입>

<객체 타입>의 모든 프로퍼티를, optional 프로퍼티로 바꾼다. 객체 타입의 모든 프로퍼티의 끝에 '?'를 붙이는 것과, 동일한 결과를 낳는다.

Required<객체 타입>

객체 타입의 모든 프로퍼티를, required 프로퍼티로 만든다. 이는, 모든 optional 프로퍼티의 끝에 있는, '?'를 지우는 것과 동일한 결과를 낳는다.

Readonly<객체 타입>

객체 타입의 모든 프로퍼티를, readonly 프로퍼티로 만든다. 이는, 프로퍼티에 재할당하지 못하게 만든다.

Record<키, 타입>

여기에서 <키>는, 문자열, 숫자, 문자열 리터럴 유니온 혹은 숫자 리터럴 유니온일 수 있다.
이렇게 만들어진 타입은, <키>를 프로퍼티의 키로 갖고, <타입>을 프로퍼티의 타입으로 갖는다.
이는 우리가 이전에 배웠던, mapped type과 유사한 점이 많다.

Pick<객체 타입, 키>

<키>의 의미는 Record와 동일하다.
<객체 타입>의 <키>를 키로 갖는 프로퍼티만 있는 객체 타입을 생성한다.

Omit<객체 타입, 키>

<키>의 의미는 Record와 동일하다.
<객체 타입>에서 <키>를 키로 갖는 프로퍼티를 제외한 객체 타입을 생성한다.

Exclude<유니온 타입, 예외 멤버>

<예외 멤버>는 타입 혹은 유니온 타입이다.
<유니온 타입>에서 <예외 멤버>를 제외한 나머지 멤버들도 구성된 유니온 타입을 생성한다.

Extract<유니온 타입1, 유니온 타입2>

<유니온타입>의 멤버 중, <유니온타입2>에 할당될 수 있는 멤버를 추출하여, 타입을 만든다. 이때, 2개 이상의 멤버를 추출하면, 유니온 타입을 만든다.

NonNullable<타입>

<타입>에서, null과 undefined를 제거한 타입을 생성한다.
이때, <타입>이 객체 타입이라면, <타입>의 프로퍼티가 null 혹은 undefined여도, 해당 프로퍼티가 제거되지 않는다.

Parameters<함수 타입>

<함수 타입>의 파라미터로, 튜플 타입을 생성한다.

마무리

타입의 확장과 재사용을 돕는 연산자들과 방법들은 많이 존재한다. keyof, typeof, in과 같은 연산자들도 있고, mapped type처럼 타입을 변환하여 새로운 타입을 만들어주는 타입스크립트 문법도 있다. 유틸리티 타입도, 그러한 방법의 하나임을 기억하고, 유용하게 쓰도록 하자.

0개의 댓글