T
에서K
프로퍼티만 선택해 새로운 오브젝트 타입을 만드는 내장 제네릭Pick<T, K>
을 이를 사용하지 않고 구현하세요.
interface Todo {
title: string
description: string
completed: boolean
}
type TodoPreview = MyPick<Todo, 'title' | 'completed'>
const todo: TodoPreview = {
title: 'Clean room',
completed: false,
}
// 풀이
type MyPick<T, K extends keyof T> = {
[U in K]: T[U]
}
배열(튜플)을 받아, 각 원소의 값을 key/value로 갖는 오브젝트 타입을 반환하는 타입을 구현하세요
const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const
type result = TupleToObject<typeof tuple> // expected { tesla: 'tesla', 'model 3': 'model 3', 'model X': 'model X', 'model Y': 'model Y'}
type TupleToObject<T extends readonly (string|number)[]> = {
[K in T[number]]: K
}
['a', 'b', 'c']
→ 'a' | 'b' | 'c'