Skip to content

Readonly

将一个泛型的所有属性都变成只读的(自身)

实现

ts
/**
 *  Make all properties in T readonly
 */
type MyReadonly<T> = {
  readonly [K in keyof T]: T[K]
}

从中可以学到 readonlyin 的作用

栗子

ts
const obj = {
  name: "张三",
}
Object.defineProperties(obj, {
  age: {
    enumerable: false,
    value: 12,
  },
  address: {
    enumerable: true,
    value: "12132",
  },
})
// { name : string }
const c: MyReadonly<typeof obj> = {
  name: "李四",
}