17. 对象部分属性只读
中等
创建一个通用的工具类型 MyReadonly2<T, K>
,其中 T
是一个对象类型,类型 K
指定 T
中要被设置为只读(readonly)的属性。
如果未提供 K
,则应使所有属性都变为只读,就像 TypeScript 内置的工具类型 Readonly<T>
一样。
例如:
interface Todo {
title: string
description: string
completed: boolean
}
const todo: MyReadonly2<Todo, 'title' | 'description'> = {
title: "Hey",
description: "jude",
completed: false,
}
todo.title = "Hello" // Error: cannot reassign a readonly property
todo.description = "buddy" // Error: cannot reassign a readonly property
todo.completed = true // OK