⚙️ 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 타입의 모든 속성이 수정 불가능하게 처리