语法需要一个名为 __spreadArrays 的导入助手

Ale*_*huk 34 javascript spread typescript visual-studio-code

当我尝试在打字稿中使用传播时,例如:

.reduce((unique, x) => {
    unique.some(element => element.machineName === x.machineName) ? unique : [...unique, x];
}
Run Code Online (Sandbox Code Playgroud)

我收到红色标记的警告Visual Studio Code

the syntax requires an imported helper named __spreadArrays

typescript version: "2.3.4"
target: "es5"
Run Code Online (Sandbox Code Playgroud)

我认为在以后的版本中这个问题是固定的,但现在我无法迁移。我该如何解决?

注意:项目编译得很好并且工作正常。但红色的底层VS Code在烦人。

小智 30

假设您的 tslib 安装正确并且是最新的,如果编辑器使用不同的 Typescript 版本,您可能仍然会在 VS Code 中收到此错误。

(摘自zok对此问题的回答

打开命令面板(Mac 上为 Cmd+Shift+P。聚焦文件必须是 .ts 或 .tsx,否则不会显示更改版本的选项)选择“TypeScript:选择 TypeScript 版本...”它会显示 VSCode 的 TS 版本和工作区(项目)一,选择工作区一


Ale*_*huk 23

因为VS Code通知基于tsLib导出。实际上,不做任何事情就没有什么不好的事情发生,只是缺少打字。

解决方案:更新tsLib依赖项以消除突出显示。就我而言,它是 version 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.

  • `npm install tslib --save` 为我完成了这项工作 (6认同)

小智 23

在我的情况下,问题是target: "es5"compilerOptionstsconfig.json

所以我将其更改为es6无需添加依赖即可使其正常工作。


Jac*_*man 22

我在 tslib 版本 1.14.1 上遇到了这个问题

npm update tslib --save 真的什么都没做

npm install tslib@latest --save 完成了这项工作,它更新到了 2.2.0 版


Eti*_*ont 8

如果 tsconfig.json 文件中有以下内容,则可能会发生此错误:

{ 
  "importHelpers": true,
  "target": "es5"
}
Run Code Online (Sandbox Code Playgroud)

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