Readonly [built-in, readonly, object-keys]
目的是不能修改对象的属性值
// 假如你有一下这两个对象,你怎样支持他们的类型
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
/**
* 答
* 1. 参数为泛型
* 2. 设置只读修饰符
* 3. key:K 就是 key值 T的key值就是属性名 以Todo为例 title description
* 4. value:值为类型T里面的K的类型 以Todo为例 title的值就是string description的值也是string
*/
type MyReadonly<T> = {
readonly [K in keyof T]: T[K];
};