当前位置:  开发笔记 > 编程语言 > 正文

ES6作为angularjs或angular2的打字稿目标编译器选项

如何解决《ES6作为angularjs或angular2的打字稿目标编译器选项》经验,为你挑选了1个好方法。

我的angularjs应用程序的编译器选项如下。我应该使用其它软件包,transpile ES6ES5如果我更改了目标再次ES6

    {
      "compilerOptions": {
        "target": "es5", // Change this to es6
        "module": "commonjs",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "outDir": "./wwwroot/app/"
      },
      "exclude": [
        "node_modules",
        "wwwroot"
      ]
    }

Jonathan Gaw.. 7

您选择哪个目标取决于您支持的浏览器。查看ES6兼容性表,我们可以针对目标对象制定一般准则。只要平台支持大于或等于TypeScript支持,那么我们就可以估算我们想要的目标。

首先在兼容性表中检查TypeScript版本的差异,我们仅发现一些差异:

TS 2.3 在函数语法中添加了2017的结尾逗号,并在2018的对象剩余/扩展属性和异步迭代器中添加了逗号。

TS 2.5增加了2019年其他可选的catch绑定。

TS 2.7添加了Next Draft的数字分隔符。

现在将TS的功能集与平台进行比较:

目标:ES3-如果您想支持:

IE8-不支持ES5

目标:ES5-如果您想支持:

IE11-不支持ES6

(iOS)Safari 9-不支持ES6

Opera Mini-不支持ES6

Android浏览器-不支持ES6

节点4-不支持ES6

可能是 Firefox ESR或Edge14。它们实现了ES6的部分/大部分功能,但可能缺少一些功能。检查您是否需要所述功能或可以填充/填充它们。

目标:ES6(ES2015) -如果您使用这些功能并且要支持:

Safari 10.0(iOS 10.2)和Node 6.5-本机不支持指数(**)运算符。

Safari 10.0(iOS 10.2)-本机不支持嵌套的其余解构。

目标:ES7(ES2016) -如果您想使用这些功能并且要支持:

Safari 10.0(iOS 10.2)或Node 7.5-本身不支持ES2017的异步功能

Safari 10.0(iOS 10.2)-本机不支持Object。getOwnPropertyDescriptors,但是有一个垫片。

节点<8-本机不支持函数语法中的尾部逗号(注意TS <2.3也不支持)

Edge 17,Chrome 61和Node < 8.10-仅支持__define / lookupGetter / Setter__的子集。

目标:ES2017-如果您想使用这些功能并且要支持:

Edge(最新版本18)或Safari / iOS 11.0-不原生支持ES2018的对象剩余/扩展属性

边缘17或Safari / iOS的11.0 -不支持ES2018的Promise.prototype.finally但它看起来像有一个垫片为

Edge(当前版本18)或Safari 11.1(iOS 11.3)-不本地支持ES2018的异步迭代器

我将把ES2018 / ESNext留给读者练习,或者将来我会更新。可以肯定地说,某些现代浏览器或库不支持某些功能,因为它们可能是试验性的。

希望这可以使您了解目标对象,但是测试对于确保您支持所需平台至关重要。兼容性表中可能没有更小的功能,或者我错过了某些功能,因此请务必进行测试。



1> Jonathan Gaw..:

您选择哪个目标取决于您支持的浏览器。查看ES6兼容性表,我们可以针对目标对象制定一般准则。只要平台支持大于或等于TypeScript支持,那么我们就可以估算我们想要的目标。

首先在兼容性表中检查TypeScript版本的差异,我们仅发现一些差异:

TS 2.3 在函数语法中添加了2017的结尾逗号,并在2018的对象剩余/扩展属性和异步迭代器中添加了逗号。

TS 2.5增加了2019年其他可选的catch绑定。

TS 2.7添加了Next Draft的数字分隔符。

现在将TS的功能集与平台进行比较:

目标:ES3-如果您想支持:

IE8-不支持ES5

目标:ES5-如果您想支持:

IE11-不支持ES6

(iOS)Safari 9-不支持ES6

Opera Mini-不支持ES6

Android浏览器-不支持ES6

节点4-不支持ES6

可能是 Firefox ESR或Edge14。它们实现了ES6的部分/大部分功能,但可能缺少一些功能。检查您是否需要所述功能或可以填充/填充它们。

目标:ES6(ES2015) -如果您使用这些功能并且要支持:

Safari 10.0(iOS 10.2)和Node 6.5-本机不支持指数(**)运算符。

Safari 10.0(iOS 10.2)-本机不支持嵌套的其余解构。

目标:ES7(ES2016) -如果您想使用这些功能并且要支持:

Safari 10.0(iOS 10.2)或Node 7.5-本身不支持ES2017的异步功能

Safari 10.0(iOS 10.2)-本机不支持Object。getOwnPropertyDescriptors,但是有一个垫片。

节点<8-本机不支持函数语法中的尾部逗号(注意TS <2.3也不支持)

Edge 17,Chrome 61和Node < 8.10-仅支持__define / lookupGetter / Setter__的子集。

目标:ES2017-如果您想使用这些功能并且要支持:

Edge(最新版本18)或Safari / iOS 11.0-不原生支持ES2018的对象剩余/扩展属性

边缘17或Safari / iOS的11.0 -不支持ES2018的Promise.prototype.finally但它看起来像有一个垫片为

Edge(当前版本18)或Safari 11.1(iOS 11.3)-不本地支持ES2018的异步迭代器

我将把ES2018 / ESNext留给读者练习,或者将来我会更新。可以肯定地说,某些现代浏览器或库不支持某些功能,因为它们可能是试验性的。

希望这可以使您了解目标对象,但是测试对于确保您支持所需平台至关重要。兼容性表中可能没有更小的功能,或者我错过了某些功能,因此请务必进行测试。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有