Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 指定对象文字';的属性是只读的_Typescript - Fatal编程技术网

Typescript 指定对象文字';的属性是只读的

Typescript 指定对象文字';的属性是只读的,typescript,Typescript,我正在寻找一种将对象文字的属性标记为只读的方法。因此,以下代码将产生编译错误: const o = { p: true }; o.p = false; // <== i want an error here 但这真的很笨拙 还有更优雅的方法吗?如果您想将所有属性设置为只读,const是一个不错的选择: const o = { p: true } as const; o.p = false; 如果您只希望某些属性是只读的,那么没有一个好的选择对象。分配工作正常,但

我正在寻找一种将对象文字的属性标记为只读的方法。因此,以下代码将产生编译错误:

const o = {
    p: true
};

o.p = false; // <== i want an error here
但这真的很笨拙


还有更优雅的方法吗?

如果您想将所有属性设置为只读
,const
是一个不错的选择:

const o = {
    p: true
} as const;

o.p = false; 

如果您只希望某些属性是只读的,那么没有一个好的选择<代码>对象。分配工作正常,但相当笨重:

const o = Object.assign({
    nonRo: true
}, {
    p: true
} as const);

o.p = false; 
o.nonRo = false //ok

实际上,“as const”是一件非常好的事情。不知怎么的,我错过了。谢谢但在这种情况下,它似乎不能正常工作:``const o={p:true}as const;函数foo(a:{p:boolean}):void{a.p=false;}foo(o);//@这是一个完全不同的问题。。Ts对readonly修饰符非常宽松,允许分配给非只读但兼容的类型是的,这太差劲了。乍一看,这实际上像是一只虫子。但你是故意的吗?你有关于这方面的文档或讨论的链接吗?@DmytroGokun这是一个关于以下主题的讨论:
const o = Object.assign({
    nonRo: true
}, {
    p: true
} as const);

o.p = false; 
o.nonRo = false //ok