타입스크립트 자주 사용하는 유틸리티 타입

프로젝트
프로젝트
카테고리
Dev
작성일
2023-04-14
태그
TypeScript
TIL
작성자
꾸생
상태
공개

⚙️ Utility Type

타입스크립트에 내장된 유틸리티 타입은 미리 정의된 타입을 다시 제공해서 타입 정의를 단순화 및 재사용성을 높이는 기능을 제공한다. 이미 정의된 타입이나 인터페이스를 지지고 볶을 수 있다.

Partial<T>

interface UserType= { name: string age: number } type OptionalUser = Partial<UserType> // { name?: string, age?: number }
T 타입의 전체 속성을 선택적(옵셔널 체이닝)으로 만든다. 즉, T 타입의 모든 속성이 선택 사항으로 처리

Pick<T, K>

interface UserType { name: string; age: number; email: string; address: string; } type UserBasicInfo = Pick<UserType, 'name' | 'age'>; // { name: string; age: number; }
타입 T에서 K 속성만 선택해 새로룬 타입을 만든다. 선택하려는 속성명을 |(or) 로 구분해 나열한다.

Omit<T, K>

interface UserType { name: string; age: number; email: string; addr: string; } type UserWithoutAddr = Omit<UserType, 'addr'> // { name: string; age: number; email: string; }
타입 T에서 K 속성을 제거한 나머지 속성들로 구성된 새로운 타입을 만든다.

Record<K, T>

type MyRecord = Record<string, number>; // { [key: string]: number; }
키 K와 값 T를 가지는 객체 타입을 생성한다. 문자열을 키로 갖는 속성에 대한 타입을 정의할 때 사용

Exclude<T, U>

type MyType = number | string | boolean; type MyNewType = Exclude<MyType, boolean>; // number | string
타입 T에서 타입 U에 할당 가능한 타입을 제외한 나머지 타입으로 구성된 새로운 타입을 생성

Readonly<T>

interface Config { apiUrl: string; timeout: number; } type ReadonlyConfig = Readonly<Config>; // { readonly apiUrl: string; readonly timeout: number; }
T 타입의 모든 속성을 읽기 전용으로 만든다. T 타입의 모든 속성이 수정 불가능하게 처리