Partial 타입은 모든 프로퍼티들을 optional 하게 변경 한다.
interface User {
id: string;
password: string;
email: string;
address: string;
}
// 모든 프로퍼티가 필수이다.
const user1: User = {
id: 'chojs28',
password: '1234',
email: '[email protected]',
address: 'earth',
};
// 모든 프로퍼티가 선택적이다.
const user2: Partial<User> = {
id: 'jjcs735',
password: '1234',
};
Pick 타입은 지정한 프로퍼티만 사용한다.
interface User {
id: string;
password: string;
email: string;
address: string;
}
// id, password 프로퍼티 필수 (그 외는 사용할 수 없음)
const user1: Pick<User, "id", "password"> = {
id: 'chojs28',
password: '1234',
};
Omit 타입은 지정한 프로퍼티를 제외하고 사용한다.
interface User {
id: string;
password: string;
email: string;
address: string;
}
// email, password를 제외한 프로퍼티 필수
const user1: Omit<User, "email", "password"> = {
id: 'chojs28',
password: '1234',
};
Optional은 Partial, Pick, Omit을 활용해 만든 타입으로, 지정한 프로퍼티를 optional 하게 만든다.
type Optional<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K>;
interface User {
id: string;
password: string;
email: string;
address: string;
}
// email, address 프로퍼티는 optional이며, 그 외는 필수
const foo = (props: Optional<User, "email" | "address">) => {
console.log(props);
}
foo({
id: 'chojs28',
password: '1234',
email: '[email protected]',
});