by Anthony Fu @antfu
T의 모든 프로퍼티를 읽기 전용(재할당 불가)으로 바꾸는 내장 제네릭 MyReadonly<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를 붙여주면 만들고자 하는 타입으로 변한다.
type MyReadonly<T> = { readonly [t in keyof T]: T[t] };