1. keyof
interface의 key 값을 union 형태로 받을 수 있음
- 예제
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
type UserKey = keyof User;
const uk:UserKey = "age" // User interface에 있는 key 값만 가능
2. Partial<T>
property를 optional 하게 만들어 줌
- 예제
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
let admin: Partial<User> = {
id: 1,
name: "An",
};
// Partial을 사용하면 User는 아래와 같이 설정한 것과 같음
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: "An",
age: 31, // interface에 age는 optional property지만 Required에 의해 필수가 됨
};
4. Readonly<T>
모든 property를 읽기전용으로 바꿈
처음에 할당만 가능하고 변경 불가
- 예제
interface User {
id: number;
name: string;
age?: number;
}
let admin: Readonly<User> = {
id: 1,
name: "An",
};
admin.id = 5; // Readonly이므로 Error 발생
5. Record<K, T>
key와 value의 type을 정해 줌
- 예제
interface User {
id: number;
name: string;
age: number;
}
function isValid(user: User){
const result: Record<keyof User, boolean> = {
id: user.id > 0,
name: user.name !== "",
age: user.age > 0,
};
return result;
}
6. Pick<T, K>
K를 통해 특정 property를 골라서 적용 가능
- 예제
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
let admin: Pick<User, "id" | "name"> = {
id: 1,
name: "An",
};
6. Omit<T, K>
K를 통해 특정 property를 제외하여 적용 가능
- 예제
interface User {
id: number;
name: string;
age: number;
gender: "M" | "F";
}
let admin: Omit<User, "age" | "gender"> = {
id: 1,
name: "An",
};
6. Exclude<T1, T2>
T1에서 T2 type을 제외하여 사용 가능
- 예제
type T1 = string | number | boolean;
type T2 = Exclude<T1, number | boolean>; // T2 type은 string
7. NonNullable<T>
null과 undefined를 제외 시킴
- 예제
type T1 = string | void | null | undefined;
type T2 = NonNullable<T1>; // T2 type은 string, void
'개발에 도움이 되는 > TypeScript' 카테고리의 다른 글
TypeScript 기본 (Generic) (0) | 2022.04.29 |
---|---|
TypeScript 기본 (Literal, Union / Intersection Type) (0) | 2022.04.26 |
TypeScript 기본 (Function) (0) | 2022.04.13 |
TypeScript 기본 (Type, Interface) (0) | 2022.04.12 |
TypeScript 개념 및 설치 방법 (React) (0) | 2022.04.06 |