TypeScript 不允许来自 JavaScript 的 with
语句。
var radius = 12;
with (Math) {
var area = PI * radius * radius;
}
解释是它在 ECMAscript 5 的“严格模式”中是不允许的。
这只是 with
语句 - 还是“严格模式”不允许的任何内容在 TypeScript 中也不允许?
最佳答案
TypeScript 确实允许 with
语句,因为不这样做会违反它作为 JavaScript 超集的规定。然而,编译器将发出一个错误(尽管仍然编译并输出代码),因为除了在运行时之外,任何东西都无法知道从 with
语句中引用了什么,这完全失败了静态类型的目的,所以你不应该在 TypeScript 程序中使用它。有一个additional discussion on the TypeScript forum关于这个。
关于 TypeScript 中不允许的其他严格模式,因为 TypeScript 试图在它可以实现其新功能的地方遵循 ES6 规范,而 ES6 规范(§10.2.1)说“模块代码始终是严格代码。 ”和“ClassDeclaration 或 ClassExpression 始终是严格的代码。”,你可能会发现几乎所有的 TypeScript 代码在未来的某个时候都需要符合严格模式,如果不是今天的话。
关于TypeScript 禁止使用 With 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21067477/