语法要求导入名为__spreadArrays的辅助工具

81

当我尝试在TypeScript中使用扩展运算符时:

.reduce((unique, x) => {
    unique.some(element => element.machineName === x.machineName) ? unique : [...unique, x];
}

我从Visual Studio Code收到红色警告:

Translated version:

我从Visual Studio Code收到红色警告:

the syntax requires an imported helper named __spreadArrays

typescript version: "2.3.4"
target: "es5"

我认为在后面的版本中,这个问题被修复了,但是现在我无法迁移。我该怎么解决它?

注意: 项目可以编译并运行正常。但是VS Code显示红色波浪线让人烦恼。


3
看起来 VS Code 被设置为以 ES5 为目标而不是 ES6?之前没见过这种情况,也许可以查看这个帖子:https://dev59.com/ZV0a5IYBdhLWcg3wxrON - beznet
10个回答

91
在我的情况下,问题出在 tsconfig.jsoncompilerOptions 中的目标设置为 target: "es5"。所以我将其更改为 es6 ,这样就可以正常工作而无需添加依赖。

我真的认为这是一个更易于理解的答案。tsLib 很少直接安装在项目中。 - RazorHead

47

快速修复,简短回答

npm install tslib@latest --save


更新

我再次遇到了这个问题(现在是使用 tslib 版本 2.2.0),更新 VS Code 后再次更新解决了问题。

原始信息

我在使用 tslib 版本 1.14.1 时遇到了这个问题。

npm update tslib --save 并没有做什么。

npm install tslib@latest --save 解决了问题,它将 tslib 更新到了版本 2.2.0。


1
我在1.14.1版本中遇到了同样的问题。我不知道这是否是该特定版本的问题(因为自1.10.0以来,_spreadArrays应该存在),但安装2.2.0似乎是解决方法。 - Jojofoulk
1
这对我有效..我不得不重新启动我的VSCode.. - Joy Lab

31

对于 VS Code,通知基于 tsLib 导出。实际上,什么都不做也不会发生什么坏事,只是缺少类型。

解决方案: 更新 tsLib 依赖项以消除高亮显示。在我的情况下,它是版本 1.9.0。更新到 1.10.0 可以解决这个问题。

__spreadArrays1.10.0 tsLib 版本中添加: https://github.com/microsoft/tslib/blob/1.10.0/tslib.es6.js

更新:由于一些时间过去了,更好的做法是将版本更新到 2.2.0(根据最后的评论)或者是 latest


更新 tslib 依赖是什么意思?将其添加到 package.json 中,作为开发依赖项还是 devDependencies? - tkit
8
npm install tslib --save 对我来说解决了问题。 - Luuk

29
假设您的tslib已经正确安装并且是最新的,但如果编辑器使用了不同的Typescript版本,则在VS Code中仍可能会出现此错误。
(摘自来自zok在此SO问题上的回答
打开命令面板(在Mac上按Cmd+Shift+P。聚焦文件必须是.ts或.tsx,否则它不会显示更改版本的选项)。
选择“TypeScript: Select TypeScript Version...”
它会显示VSCode的TS版本和工作区(项目)的版本,请选择工作区的版本。

这是唯一有效的答案,因为问题涉及到 VS Code 的问题,假设构建将成功。 - Christian Vincenzo Traina

8

如果您的 tsconfig.json 文件中包含以下内容,可能会出现此错误:

{ 
  "importHelpers": true,
  "target": "es5"
}

如果由于任何原因您无法升级到es6,请将importHelpers设置为false,这将使错误消失...

在我的情况下,一个原因是我使用的第三方API在实例化对象时没有使用“new”关键字。 - horiatu

2

从右侧向下移动鼠标,悬停在TypeScript旁边的花括号上,然后单击版本。它会给你一些选项,通常与项目相关。只需选择版本,它就可以正常工作。


1
太棒了!这是最简单的解决方案。谢谢! - ollalla
1
太棒了。最简单的解决方案。谢谢! - undefined

1
针对使用 yarn 的用户: yarn upgrade tslib@latest

0
遇到了一个依赖问题,通过更新其tsconfig.ts中的路径到顶层最新的tslib来解决它。
"importHelpers": true,
"paths": {
  "tslib": [ "../tslib/tslib.d.ts" ]
}

0

请确保在 vscode 编辑器选项底部启用了 tslint


0

您可能需要升级到 tslib@2.2.0 版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接