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:
它们之间有什么区别?如果我只需要 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 你解决了吗?我试图同时包含es2018
和es2018.promise
,但Promise.finally()
仍然不可用。我是否需要在代码中手动包含一些库?以上是关于es2018 vs es2018.promise vs es2018.regexp的主要内容,如果未能解决你的问题,请参考以下文章