1. keyof : Object의 Key를 가리킴.
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
type UserKey = keyof User;
const userkey :UserKey = "id";
2. Partial<T>
: Property를 모두 'Optional'로 바꿔 줌.
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
let admin :Partial<User> = {
id: 1,
name: "Tom",
}
interface User {
id?: number;
name?: string;
age?: number;
gender?: "M" | "F";
}
3. Required<T>
: Property를 모두 '필수 입력'으로 바꿔 줌.
interface User {
id: number;
name: string;
age?: number;
}
let admin :Required<User> = {
id: 1,
name: "Tom",
}
4. Readonly<T>
: Property를 '읽기 전용'으로 바꿔 줌.
interface User {
id: number;
name: string;
}
let admin :Readonly<User> = {
id: 220,
name: "Tom"
}
admin.id = 10;
5. Record<K,T>
: 'K' = 'Key', 'T' = 'Type'
type Grades = "1" | "2" | "3" | "4";
type Scores = "A" | "B" | "C" | "D" | "F";
const score :Record<Grades, Scores> = {
1 : "A",
2 : "B",
3 : "C",
4 : "D",
}
interface Members {
id : number;
name : string;
age : number;
}
function isValid(member :Members) {
const result :Record<keyof Members, boolean> = {
id: member.id > 0,
name: member.name !== "",
age: member.age > 0,
};
return result;
}
6. Pick<T,K>
: Type에서 특정 Property만 골라 사용
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
const admin :Pick<User, "id" | "name"> = {
id: 0,
name: "Tom",
}
7. Omit<T,K>
: 특정 Property를 제외/생략(omit)하고 사용 가능
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
const admin :Omit<User4, "age" | "gender"> = {
id: 0,
name: "Tom",
}
8. Exclude<T1,T2>
: Type1에서 Type2를 제외하고 사용하는 방식.
type T1 = string | number | boolean;
type T2 = Exclude<T1, number | string>;
9. NonNullable<Type>
: Null과 Undefined를 제외한 타입을 생성.
type T1 = string | null | undefined | void;
type T2 = NonNullable<T1>;