这是一个长期存在的已知稳健性问题,可在
microsoft/TypeScript#13347
.目前a
readonly
property
会阻止你给它写信
直接地
,但仍被认为
可分配
往返于非-
只读
财产。这种可分配性是为了使该功能不会对现有代码造成巨大的破坏性变化。不是
完全地
这样没用,但令人惊讶的是,关于同一主题的另一个问题,
microsoft/TypeScript#13002
,最初被命名为
"readonly modifiers are a joke"
.
从TypeScript 5.7开始,在该语言的任何发布版本中都没有编译器选项来解决这个问题。然而,有一个
--enforceReadonly
在pull请求时标记实现
microsoft/TypeScript#58296
,由TypeScript语言架构师编写。因此,在不久的将来,这很有可能成为语言的一部分。在设计会议笔记中
microsoft/TypeScript#59406
TypeScript 5.7迭代计划
微软/TypeScript#58296
看起来他们正在考虑用TypeScript 5.7实现这一点,但似乎没有发生。我没有看到TypeScript 5.8的迭代计划,所以我也不确定它是否会成为该版本的一部分。也许是TypeScript 5.9?当然,如果它真的发布了,对任何启用它的人来说,这仍然是一个相当大的突破性变化,这就是为什么它
--enforceReadonly
而不是
--strictReadonly
;它不会成为
the
--strict
suite of compiler options
.
除非它被合并,否则你只需要处理它,即使它被合并了,如果你依赖于它破坏的任何库,你可能也无法立即使用该编译器选项。现在,你应该小心
只读
物业。