jaenny.dev
article thumbnail

1. 문제

T의 모든 프로퍼티를 readonly로 바꾸는 내장 제네릭 Readonly<T>를 직접 구현하세요.

 

예시:

<code />
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

 

2. 풀이

<code />
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의 타입에 접근합니다.

profile

jaenny.dev

@jaenny.dev

Go Beyond! Front-end developer, jaenny✨