객체의 프로퍼티와 모든 하위 객체를 재귀적으로 읽기 전용으로 설정하는 제네릭 DeepReadonly<T>를 구현하세요.
이 챌린지에서는 타입 파라미터 T를 객체 타입으로 제한하고 있습니다. 객체뿐만 아니라 배열, 함수, 클래스 등 가능한 다양한 형태의 타입 파라미터를 사용하도록 도전해 보세요.
type DeepReadonly<T extends object> = {
readonly [K in keyof T]: T[K] extends Function?
T[K]
:T[K] extends object?
DeepReadonly<T[K]>
:T[K]
}
type DeepReadonly<T> = keyof T extends never
? T
: { readonly [k in keyof T]: DeepReadonly<T[k]> };
이 풀이는 함수가 value 타입으로 올 때를 대응하지 못한다