jaenny.dev
article thumbnail

문제

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

profile

jaenny.dev

@jaenny.dev

Go Beyond! Front-end developer, jaenny✨