[TS Challenges] 4. Pick

cansweep·2023년 5월 15일
0

ts-challenges

목록 보기
1/2
post-thumbnail

문제 링크

문제

T에서 K 프로퍼티만 선택해 새로운 오브젝트 타입을 만드는 내장 제네릭 Pick<T, K>을 이를 사용하지 않고 구현하세요.

ex.

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

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

const todo: TodoPreview = {
    title: 'Clean room',
    completed: false,
}

풀이

  1. Pick<Type, Keys>은 Type에서 특정 Key들을 골라 타입을 정의한다.
    Keys에 올 값들은 Type에 있다고 볼 수 있으니 Keys에는 Types에 정의된 key 값들이 들어가면 된다.

  2. keyof 연산자는 객체 타입에서 객체의 키 값들을 유니온 타입으로 만들어준다.
    Keys는 K extends keyof T로 대체될 수 있다.

  3. key로 쓰일 값들을 K를 순회하면서 찾고 그에 대한 타입은 T에서 찾을 수 있다.

답안

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

https://github.com/type-challenges/type-challenges/issues/27410

profile
하고 싶은 건 다 해보자! 를 달고 사는 프론트엔드 개발자입니다.

0개의 댓글