es2018 vs es2018.promise vs es2018.regexp

Posted

技术标签:

【中文标题】es2018 vs es2018.promise vs es2018.regexp【英文标题】: 【发布时间】:2018-09-11 22:55:18 【问题描述】:

TypeScript 编译器有 following options 用于 --lib cmd 行 arg:

ES2018 ES2018.Promise ES2018.RegExp

它们之间有什么区别?如果我只需要 Promisefinally() 支持而不关心其他 ES2018 功能,我应该使用 ES2018 还是 ES2018.Promise

另外,那些ES2018 库支持的TS 版本是什么?当我尝试将它们与 TS 2.6.2 一起使用时,它会抛出:

错误:tsconfig.json(16,13):错误 TS6046:“--lib”选项的参数 必须是:“es5”、“es6”、“es2015”、“es7”、“es2016”、“es2017”、“esnext”、 'dom','dom.iterable','webworker','scripthost','es2015.core', 'es2015.collection','es2015.generator','es2015.iterable', 'es2015.promise'、'es2015.proxy'、'es2015.reflect'、'es2015.symbol'、 'es2015.symbol.wellknown'、'es2016.array.include'、'es2017.object'、 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'。

【问题讨论】:

正确。 ES2018 包括 AFAIK 对象 rest、Promise.finally 和正则表达式:命名捕获组、lookbehinds、s-flag 和 unicode 脚本属性。 【参考方案1】:

lib 选项仅提供这些库的类型。如果您指定ES2018,那么即使您的目标是ES2015,您也会输入ES2018。默认情况下,TypeScript 会根据您指定的目标设置一些库,但它允许您从 2.0 版开始手动添加更多类型。

它们之间有什么区别?

它们是不同功能系列的子集。

如果我需要 Promisefinally(),我应该使用 ES2018 还是 ES2018.Promise 仅支持而不关心其他 ES2018 功能?

是的,您可以满足您的需求。但是,如果您包含更多内容,它不会增加您生成的 javascript

从什么 TS 版本开始支持这些 ES2018 库?

如果您使用的目标本身不支持某个功能,您可以下载 (npm) 一个包到 Polyfill。它与 TS 版本没有直接关系。

【讨论】:

感谢您的回答!这是否意味着ES2018.Promise 选项仅支持所有 ES2017 功能 + ES2018 承诺,而不支持 ES2018 的其余功能? 另外关于支持 ES2018 的 TS 版本:请参阅我更新的问题。我认为他们在比 TS 2.6.2 更新的版本中引入了ES2018.* cmd line args。因此,我们必须使用某个最小版本的 TS 才能使用 ES2018 功能。 @AlexanderAbakumov 你解决了吗?我试图同时包含es2018es2018.promise,但Promise.finally() 仍然不可用。我是否需要在代码中手动包含一些库?

以上是关于es2018 vs es2018.promise vs es2018.regexp的主要内容,如果未能解决你的问题,请参考以下文章

druid vs elasticSearch druid 和es 对比

es6 vs commonjs

去重 es5 VS es6

es6继承 vs js原生继承(es5)

javascript Const vs Let:ES6

markdown #Python VS ES6语法比较