Pick은 특정 객체 타입에서 일부 프로퍼티만 골라내는 유틸리티 타입임.
interface Post {
title: string;
tags: string[];
content: string;
thumbnailURL?: string;
}
const legacyPost: Pick<Post, "title" | "content"> = {
title: "",
content: "",
};
type Pick<T, K extends keyof T> = {
[key in K]: T[key];
};
Omit은 특정 객체 타입에서 일부 프로퍼티만 제외하는 유틸리티 타입임.
const noTitlePost: Omit<Post, "title"> = {
content: "",
tags: [],
thumbnailURL: "",
};
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
Record는 키-값 쌍을 가지는 객체 타입을 생성할 때 사용함.
type Thumbnail = Record<
"large" | "medium" | "small",
{ url: string }
>;
type Record<K extends keyof any, V> = {
[key in K]: V;
};