프로그래밍/typescsript
타입스크립트의 유틸리티 타입
한코코
2022. 11. 23. 14:25
유틸리티 타입이란?
이미 정의해 놓은 타입을 변환할때 사용하기 좋은 타입 문법이다. 유틸리티 외의 문법으로도 타입을 변환할 수 있지만, 유틸리티 타입을 쓰면 훨씬 더 간결한 문법으로 타입을 정의할 수 있다.
자주 사용되는 유틸리티 타입
Partial(파셜)
특정 타입의 부분 집합을 만족하는 타입을 정의할 수 있다.
interface Address {
email: string;
address: string;
}
type MayHaveEmail = Partial<Address>;
const me: MayHaveEmail = {}; // 가능
const you: MayHaveEmail = { email: 'test@abc.com' }; // 가능
const all: MayHaveEmail = { email: 'capt@hero.com', address: 'Pangyo' }; // 가능
Pick
특정 타입에서 몇개의 속성을 선택해서 타입을 정의할 수 있다.
interface Hero {
name: string;
skill: string;
}
const human: Pick<Hero, 'name'> = {
name: '스킬이 없는 사람',
};
type HasThen<T> = Pick<Promise<T>, 'then' | 'catch'>;
let hasThen: HasThen<number> = Promise.resolve(4);
hasThen.th // 위에서 'then'만 선택하면 'then'만 제공, 'catch' 선택하면 'catch만 제공'
Omit(오밋)
특정 타입에서 지정된 속상만 제거한 타입을 정의한다.
interface AddressBook {
name: string;
phone: number;
address: string;
company: string;
}
const phoneBook: Omit<AddressBook, 'address'> = {
name: '재택근무',
phone: 12342223333,
company: '내 방'
}
const chingtao: Omit<AddressBook, 'address'|'company'> = {
name: '중국집',
phone: 44455557777
}
참고 사이트 : 공식 타입스크립트 핸드북