我正在寻找一种将对象文字的属性标记为只读的方法。这样以下代码将产生编译错误:
const o = {
p: true
};
o.p = false; // <== i want an error here
我显然可以这样做:
const o: {readonly p: boolean} = {
p: true
};
o.p = false;
但这真的很笨拙。
还有更优雅的方式吗?
答案 0 :(得分:1)
如果要将所有属性设为只读as const
,则是一个不错的选择:
const o = {
p: true
} as const;
o.p = false;
如果只希望某些属性为只读,则没有一个好的选择... Object.assign
可以使用,但是很笨拙:
const o = Object.assign({
nonRo: true
}, {
p: true
} as const);
o.p = false;
o.nonRo = false //ok