타입 스크립트는 공통 타입 변환을 용이하게 하기 위해 몇가지 유틸리티 타입을 제공하고, 이 유틸리티 타입은 전역으로 사용 가능하다.
여기서는 Partial, Pick, Omit 타입만 다룬다.
interface User {
id: string;
email: string;
password: string;
nickname: string;
}
function editUser(editUserInput:Partial<User>) {
//...생략
}
T의 모든 프로퍼티를 선택적으로 만드는 타입을 구성한다. 이 유틸리티는 주어진 타입의 모든 하위 타입 집합을 나타낸는 타입을 반환한다.
예: 유저 정보 변경시 email, password, nickname 중 어느 한가지만 인수로 들어올 수 있고, 아니면 모든 프로퍼티가 인수로 들어올 수도 있다.
User 인터페이스의 모든 프로퍼티를 옵셔널로 설정하거나 별개의 인터페이스를 만들수도 있지만 Partial타입을 이용하는 것이 효율적이다.
function login(loginInput:Pick<User, "email" | "password">) {
//...생략, loginInput은 User의 일부인 email과 password이다.
}
T에서 K의 집합을 선택해 타입을 구성한다.
function userData():Omit<User, "password"> {
//...생략, userData함수는 User에서 password 프로퍼티를 제외한 id, email, nickname로 구성된 객체를 반환한다.
}
유저정보를 반환할때 민감한 정보인 비밀번호를 제외하고 반환하는 일 등에 사용할 수 있다.