【发布时间】:2015-05-07 00:22:43
【问题描述】:
如果 TypeScript 是 JavaScript 的严格超集,为什么任意对象上的点符号是错误的?我有 JS 代码,我想将其转换为 TS 以获得更好的类型安全性,但所有使用点表示法(例如,myObj.thing)的访问都会给我错误Property 'thing' does not exist on type '{}'.。当我使用括号表示法(例如,myObj['thing'])时,它可以正常工作。
【问题讨论】:
-
这是一个警告,它仍然应该编译,所以 TypeScript 仍然是 JS 的严格超集。它警告您的原因是因为 TypeScript 是类型化的,并且
x的类型没有指定bar属性。您可以转换为any,应用具有bar的接口,或使用["bar"]。 -
@Asad:显示和描述的错误被报告为正确的错误,而不是警告,并且我的构建失败。但是,我可以成功转换为
any。 -
TypeScript 故意比 JavaScript 更严格,所以它在 Javascript 中合法并不一定意味着 TypeScript 编译器会同意。
标签: javascript typescript