[TS] 타입스크립트 유틸리티 타입

손규성·2022년 12월 8일
0

typescript

목록 보기
2/2
post-thumbnail

1. 요약


  • 유틸리티 타입은 타입 변경을 쉽고 용이하게 하기 위한 일종의 헬퍼 함수 같은 것이다
  • 유틸리티 타입 없이도 충분히 타입을 변환할 수 있지만, 유틸리티 타입을 활용하면 훨씬 간결하고 편한 타입 변환이 가능하다
  • 모든 유틸리티 타입은 타입스크립트에 내장된 채로 제공되며, 전역으로 사용 가능하다.
  • 이번 포스팅의 목적은 알아두면 좋다는 핵심 유틸리티 타입에 대한 설명/예시를 정리해두는 것이다

2. 유틸리티 타입


2-1. Partial<T>


Partial<T><T>의 모든 프로퍼티를 옵셔널(Optional) 프로퍼티로 변환한다.

  • Partial<User>를 통해 User 인터페이스 안의 모든 프로퍼티를 옵셔널로 변환할 수 있다
  • address 프로퍼티에 있는 객체 내부 프로퍼티는 변경되지 않는다. <T>로 입력받은 User의 직속 프로퍼티만 옵셔널로 변환된다

2-2. Required<T>


반대로 Required<T>는 모든 <T>의 모든 프로퍼티를 Required로 변환한다.

  • Required<ReqTest>를 통해 ReqTest 내 프로퍼티(a, b, c)에서 옵셔널을 제거하고 모두 Required로 변환한다
  • Partial<T>와 마찬가지로 프로퍼티의 내부 객체에는 접근하지 않고, 입력받은 인터페이스의 직속 프로퍼티에만 접근한다

2-3. Readonly<T>


Readonly<T><T>의 모든 프로퍼티를 readonly 상태로 변환한다.

  • Readyonly<SomeType>을 통해 모든 프로퍼티가 readonly 상태인 SomeType이 반환된다
  • 반환된 타입을 value 객체의 타입으로 지정한 후 value.a의 값을 수정하려고 하면, a가 readonly 상태이므로 에러가 발생하게 된다

2-4. Record<Keys, Type>


Record<Keys, Type>은 Key를 속성으로, Type를 속성 값의 타입으로 지정하는 새로운 타입을 반환한다 { KEY : TYPE, ... } 형태로 반환. 주로 타입의 프로퍼티들을 다른 타입에 매핑시키는 데 사용한다.

  • a, b, c 프로퍼티를 생성하고, 각 프로퍼티 값의 타입을 <Type>으로 받은 number로 지정한다

2-5. Pick<Type, Keys>


Pick<Type, Key>는 Type으로 부터 Keys에 해당하는 속성을 선택해서 새로운 타입을 반환한다.

  • title과 isComplete만 Keys로 입력했기 때문에, 새로 반환된 타입은 description 프로퍼티가 없다

2-6. Omit<Type, Keys>


Pick과 반대로 Type으로 부터 Keys에 해당하는 속성을 제외한 나머지를 모아서 새로운 타입을 반환한다.

  • b와 c를 Keys로 받았기 때문에, b와 c를 제외한 a, d, e만 모아서 새로운 타입을 생성한다

2-7. NonNullable<Type>


Type에서 undefinednull을 제외한 새로운 타입을 반환한다.

2-8. Parameters<T>


함수를 제네릭 타입으로 받은 후 함수의 매개변수의 타입을 새로운 튜플 타입으로 반환한다.

  • 제네릭 타입으로 받은 함수는 타입아 string인 매개변수가 한 개 존재하므로 매개변수의 수와 타입이 반영된 튜플 형태의 타입을 반환한다. length: 1 / type: string

  • 해당 예제의 경우 매개변수가 없으므로 빈 튜플이 반환된다.

2-9. ReturnType<T>


함수를 제네릭 타입으로 받은 후 함수의 Return 값의 타입을 반환한다.

  • RetType3 처럼 아직 Return 값의 타입이 미정인 상태인 경우 unknown으로 반환된다

profile
블로그 이사 → https://sqsung.tistory.com/

0개의 댓글