이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
https://github.com/type-challenges/type-challenges/blob/main/questions/00007-easy-readonly/README.md
type MyReadonly<T> = {
readonly [P in keyof T]: T[P]
}
4-pick 과 매우 유사하다.
다만, 제네릭의 인자로 T하나만 받을 수 있다는 점이 다르다.
따라서 4-pick에 있던 K를 keyof T로 바꾸어서 앞에 readonly만 붙여주면 된다.
type MyReadonly : MyReadonly라는 타입을 정의한다.
<T> : 제네릭으로 T를 사용하겠다고 정의
readonly [P in keyof T]: T[P] : T의 key값들을 P라는 타입 파라미터로 정의한다. 그 값들은 reaonly이며, T[P]를 타입이다.
javascript 스타일로 말하자면, T = [key1: 1, key2: 2, key3: 3...] 에서 key1, key2, key3... 을 뽑아서 각각 readonly를 붙여주었다고 생각하면 된다. (정확하게는 좀 다르지만)
참고하면 좋은 챌린지 : https://suloth.tistory.com/25
'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 |
타입챌린지 : 4-Pick (easy) (0) | 2023.02.28 |