본문 바로가기

Language/Typescript

[Typescript] 유틸리티 타입 Pick 직접 구현하기

728x90
반응형

Pick<T, K> 타입?

객체 타입 T에서 원하는 key(K)만 뽑아서 새로운 타입을 만드는 기능이다.

 

예시

interface Todo {
  title: string
  description: string
  completed: boolean
}

type TodoPreview = Pick<Todo, 'title' | 'completed'>

 

 

이렇게 하면 TodoPreview 타입은 다음과 같이 변환된다.

{
  title: string
  completed: boolean
}

 

Todo에서 'title'과 'completed'만 뽑아온 것이다.

 

Pick을 직접 구현해보자

type MyPick<T, K extends keyof T> = {
  [P in K]: T[P]
}

 

<T, K extends keyof T>

K는 반드시 T의 키 중 일부여야 한다.

keyof 키워드는 T의 모든 키 이름들을 유니온 타입( "title" | "description" | "completed")으로 만들어주고

extends 키워드를 통해 상속받아서 T의 키가 아니면 에러가 나게 한다.

 

[P in K]

K 안의 키들을 하나씩 꺼내서 새로운 타입을 만든다

 

T[P]

원래 T 타입에서 해당 key P의 타입을 가져온다

728x90
반응형

'Language > Typescript' 카테고리의 다른 글

[Typescript] unknown과 any의 차이  (1) 2024.10.06
[Typescript] 제네릭(Generics)  (0) 2022.02.21
[Typescript] 클래스(Class)  (0) 2022.02.20
[Typescript] 리터럴, 유니온/교차 타입  (0) 2022.02.19
[Typescript] 함수  (0) 2022.02.18