代码点读机 / TypeScript / Readonly

Readonly TypeScript · 工具类型

把对象类型的所有顶层属性变成只读,重新赋值会被类型检查拦住;但如果属性值是对象或数组,其内部内容仍可修改。

怎么用

Readonly<类型>

小例子

interface 点 {
  x: number;
  y: number;
}
let p: Readonly<点> = { x: 1, y: 2 };
p.x = 3;

类型检查结果

类型检查结果:无法分配到"x",因为它是只读属性

提醒:只冻结顶层属性,嵌套对象/数组的内容仍可变;要深度不可变需自己递归实现或使用第三方类型

官方文档:https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← TypeScript全部词条