TypeScript禁止使用语句

时间:2014-01-11 20:28:03

标签: typescript

TypeScript不允许来自JavaScript的with语句。

var radius = 12;
with (Math) {
    var area = PI * radius * radius;
}

解释是ECMAscript 5中的“严格模式”不允许这样做。

这只是with语句 - 或者“严格模式”不允许的任何内容也不允许在TypeScript中使用吗?

1 个答案:

答案 0 :(得分:3)

TypeScript确实允许with语句,因为不这样做会违反它作为JavaScript的超集。但是,编译器会发出一个错误(虽然仍然编译并输出代码),因为除了在运行时之外,没有任何方法可以知道从with语句引用的内容,这完全违背了静态类型,因此您不应该在TypeScript程序中使用它。关于此问题有一个additional discussion on the TypeScript forum

关于TypeScript中不允许的其他严格模式,因为TypeScript尝试遵循ES6规范,因为它可以用于新功能,而ES6规范(第10.2.1节)则说“模块代码始终是严格的代码。 “和”ClassDeclaration或ClassExpression总是严格的代码。“,您可能会发现,如果不是今天,几乎所有的TypeScript代码都需要在未来的某个时候符合严格模式。