TypeScript针对错误的ECMAScript版本

时间:2019-05-14 08:47:28

标签: javascript typescript visual-studio-2017

突然之间,至少感觉是这样,我的VS17开始将我的TypeScript转换为ECMAScript 6,但是VS不会接受它,并突然引发许多SCRIPT1002和SCRIPT1006错误:“第3行出现JavaScript严重错误, http://localhost:57125/Scripts/js/Modules/Test.js中的第5列\ n \ nSCRIPT1002:语法错误“

我有一个非常简化的TS模块:

module Test {
    export class TestObject {
        Data: string;
    }
}

它转换为

var Test;
(function (Test) {
    class TestObject {
    }
Test.TestObject = TestObject;
})(Test || (Test = {}));
//# sourceMappingURL=Test.js.map

但是Visual Studio抱怨class是一种语法错误。

它应该输出的(直到上周的某个时间才完成)

var Test;
(function (Test) {
    var TestObject = (function () {
        function TestObject() {
        }
        return TestObject;
    }());
    Test.TestObject = TestObject;
})(Test || (Test = {}));

我确定VS(或者可能是IE11?)期望ECMAScript 5,但是更改项目属性中的版本对我没有任何帮助(ECMAScript 3、5、6、2016、2017和Next)。我安装了TS 2.8、3.0和3.1。更改此选项也无济于事。模块系统设置为AMD,但这对我来说没有任何改变。要么..

我该如何解决?我已经多次重启了VS,甚至还重新启动了计算机,以防某些愚蠢的进程没有因VS而死。

1 个答案:

答案 0 :(得分:0)

原来是我造成了问题。 IE中的CTRL + F5修复了它。


最近,由于要使用某些语法,我将ES版本更改为6。我从未完成代码,而两天前我又捡起了它。它在前两个调试会话中运行良好,可能是因为我没有进行任何更改。突然停止了工作。

回到ES5并没有执行任何操作-错误的代码仍保留在ES6。我想检查一下另一个已转译的JS,发现JS是ES5,这让我认为这可能是一个缓存问题。

果然,IE缓存了ES6 JS,并将文件内容以及错误消息报告回VS。 CTRL + F5 = 0问题。

顺便说一句,我发现IE仅支持ES5。

感谢IE一天半的进餐时间。