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 |