我有一个包含类定义的 typescript 文件:
if (window.console == null) {
(<any>window).console = {
error: function (a) {
},
log: function (a) {
}
};
}
class SendMessage {
//.....
}
编译为 javascript(通过 VS2015)后,我在类定义行上收到错误:
Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
我发现我必须使用严格模式。但是为什么以及如何在 typescript 中使用它?
谢谢
最佳答案
这是因为它正在编译为 ES6 并且浏览器要求在严格模式下使用块范围的声明。
您可以使用严格模式解决此问题。要做到这一点,请添加...
"use strict";
...到每个文件的顶部。
但是,我认为您可能希望将编译目标从 ES6 更改为 ES5。如果您使用的是
tsconfig.json
,请将 "target": "es6"
更改为 "target": "es5"
。这样做将...编译为 ES5...因此块范围的声明将被适当更改,因此不需要 "use strict";
。此外,更多浏览器将支持您的代码。现在运行时 ES6 支持仍然不普遍。请注意,如果您不使用 tsconfig.json,则可能需要更改项目属性的 typescript 构建选项卡中的目标,如下所示:
关于javascript - 在严格模式之外尚不支持 Typescript 和 Uncaught SyntaxError : Block-scoped declarations (let, const, function, class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33634055/