문제
T
의 모든 프로퍼티를 readonly로 바꾸는 내장 제네릭 Readonly<T>
를 직접 구현하세요.
예시:
interface Todo {
title: string
description: string
}
const todo: MyReadonly<Todo> = {
title: "Hey",
description: "foobar"
}
todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "barFoo" // Error: cannot reassign a readonly property
풀이
type MyReadonly<T> = {
readonly [key in keyof T]: T[key];
};
readonly
readonly는 key 앞에 붙여주면 readonly로 사용할 수 있습니다.
key in keyof T
T의 프로퍼티들을 순회하면서 key로 가져와야 하기 때문에 T 앞에 keyof
를 추가해 줍니다.
T[key]
가져온 key를 사용해서 T[key]
로 value의 타입에 접근합니다.
'Frontend > Type-Challenge' 카테고리의 다른 글
[타입챌린지/type-challenge] RequiredByKeys (0) | 2023.01.31 |
---|---|
[타입챌린지/type-challenge] Pick (0) | 2023.01.26 |
[타입챌린지/type-challenge] Includes (2) | 2023.01.25 |
[타입챌린지/type-challenge] Awaited (0) | 2023.01.25 |
[타입챌린지/type-challenge] First of Array (0) | 2023.01.23 |