刚学 ts 发现 readonly 属性居然可以修改,有大神知道是怎么回事吗

247 天前
 baolinliu442k

为什么 aa 的属性可以修改, 而直接 aa.a = 1 是不允许的

如图所示

1344 次点击
所在节点    问与答
6 条回复
nightwitch
247 天前
想要真正的 readonly 用 Object.freeze()。
ts 只能靠静态分析来做这种检查,总有 case 可以绕开
mxT52CRuqR6o5
247 天前
不仅如此,你在 ts 里定义一个类型为 number 的属性在运行时还能给它赋 string 值呢
Trim21
247 天前
你 Proxify 的实现有问题呗。

不过我也不确定 typescript 能不能实现这个类型安全。。。
PainAndLove
247 天前
ts 只是静态的格式校验、报错提示。 运行时不会起作用。
IvanLi127
247 天前
我感觉 Proxify 类型定义没考虑到这个情况,得改改。
Al0rid4l
247 天前
typescript 的类型系统是 unsound 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX