본문 바로가기

개발에 도움이 되는/TypeScript

TypeScript 기본 (Utility Type)

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

 

반응형