在IE11中,Typescript生成JS中的Javascript错误

时间:2016-04-19 16:13:16

标签: javascript typescript

当我在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垫片,但同样的问题。

感谢您就此问题提供任何意见。

2 个答案:

答案 0 :(得分:15)

IE 11 does not support the class keyword和语言功能,根据兼容性表格。

您可以强制使用Typescript编译器输出与您的构建中使用the --target option或同等版本的旧版JavaScript兼容的代码。否则,您需要通过另一个转换器(例如Babel)运行TS输出,以生成将在IE下运行的ES5。

答案 1 :(得分:7)

您的编译器似乎仍在编译为IE11 不支持的es6代码

尝试更改编译器选项以编译为es5。