当我在IE11中加载页面时,我从typescript中的简单模块/类中得到以下错误。在Edge和Chrome等其他浏览器中不会发生此错误。
clock.js第4行第4行的JavaScript严重错误SCRIPT1002: 语法错误
这是TS代码。
module DateTime {
export class TestMe {
private timeNow:Date;
constructor() {
alert("Hello");
}
}
}
这是从它生成的JS代码。
var DateTime;
(function (DateTime) {
class TestMe {
constructor() {
alert("Hello");
}
}
DateTime.TestMe = TestMe;
})(DateTime || (DateTime = {}));
这就是在页面上调用它的方法。
<script type="text/javascript">
$(document)
.ready(function() {
var testIt = new DateTime.TestMe();
}
);
</script>
从调试器我可以看出它不喜欢&#34; class&#34; JS代码中的关键字。 Page甚至无法创建&#34; TestMe&#34;因为clock.js中的语法错误不会让该文件加载。 有什么我需要包含它在IE11中工作吗?我试图包括es6垫片,但同样的问题。
感谢您就此问题提供任何意见。
答案 0 :(得分:15)
IE 11 does not support the class
keyword和语言功能,根据兼容性表格。
您可以强制使用Typescript编译器输出与您的构建中使用the --target
option或同等版本的旧版JavaScript兼容的代码。否则,您需要通过另一个转换器(例如Babel)运行TS输出,以生成将在IE下运行的ES5。
答案 1 :(得分:7)
您的编译器似乎仍在编译为IE11 不支持的es6代码
尝试更改编译器选项以编译为es5。