이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
https://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.md
type MyPick<T, K extends keyof T> = {
[P in K]: T[P]
};
type MyPick : MyPick 이라는 타입을 정의한다.
<T, K extends keyof T> : 제네릭 T와 K를 정의하는데, K는 T의 key를 값으로 가지는 type이다.
[P in K]: T[P] : K에 해당하는 값들을 P라는 타입 파라미터로 정의하고 그 값들의 타입은 T[P] 이다. 여기서 T[P]는 객체를 접근할 때와 같이 생각하면 된다. ex) obj['key'] -> T[keys] -> T[P] 로 변했다고 생각해보자.
[P in K] 는 for const P of K 로 이해하면 쉽다.
의문점
그렇다면 왜 [P in K]: K[P] 는 안될까...? 그냥 [P in K]: T[P] 자체로 문법일 수도 있을 것 같다. 잘 모르겠으면 외우는게 최고다.
-> 해결 : K는 key의 배열같은 느낌이라고 생각하면 된다. 즉 K = ["key1", "key2", "key3"] 따라서, K[0]과 같이 접근은 가능하겠으나(이것도 실제로는 안될거같지만, 이해를 돕기위해 이렇게 설명하겠다) K["key1"] 과 같은 접근은 불가능하다.
'Language > Typescript' 카테고리의 다른 글
타입챌린지 : 43-Exclude (easy) (0) | 2023.03.02 |
---|---|
타입챌린지 : 18-Length of Tuple (easy) (0) | 2023.03.02 |
타입챌린지 : 14-First of Array (easy) (0) | 2023.03.02 |
타입챌린지 : 11-Tuple to Object (easy) (0) | 2023.03.01 |
타입챌린지 : 7-Readonly (easy) (0) | 2023.03.01 |