80

When I'm trying to use spreading in typescript like:

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

I get warning with red marking from Visual Studio Code:

the syntax requires an imported helper named __spreadArrays

typescript version: "2.3.4"
target: "es5"

I think in later versions this issue is fixed, but right now I can't migrate. How can I fix it?

Note: Project gets compiled fine and works. But red underlying in VS Code in annoying.

Alex Vovchuk
  • 2,828
  • 4
  • 19
  • 40
  • 3
    It looks like VS Code is set to target es5 instead of es6? Haven't seen that before, maybe check out this thread: https://stackoverflow.com/questions/29953293/is-there-a-way-to-turn-on-es6-es7-syntax-support-in-vscode – beznet Oct 10 '19 at 18:46

10 Answers10

89

In my case the problem it was target: "es5" in compilerOptions at tsconfig.json.

So I change it to es6 to get it works without adding dependency.

yacth_Mon
  • 999
  • 1
  • 7
  • 6
47

Quick fix, short answer

npm install tslib@latest --save


Update

I got this issue again (now with tslib version 2.2.0) after updating VS Code, again updating fixed the issue.

Original

I had this issue with tslib version 1.14.1

npm update tslib --save didn't really do anything

npm install tslib@latest --save did the job, it updated to version 2.2.0

Jacob-Jan Mosselman
  • 801
  • 1
  • 10
  • 18
  • 1
    Had the same issue with 1.14.1. I don't know if this is an issue with that specific version (since _spreadArrays is meant to be there since 1.10.0), but installing 2.2.0 seems to be the fix – Jojofoulk May 19 '21 at 06:40
  • 1
    this works for me.. i had to restart my vscode.. – Joy Lab Jan 21 '22 at 06:05
31

For VS Code the notification is based on the tsLib exports. Actually nothing bad happens without doing anything, it is just lack of typing.

Solution: Update tsLib dependency to get rid of the highlighting. In my case it was version 1.9.0. Update to 1.10.0 solved the issue.

__spreadArrays is added in 1.10.0 tsLib version: https://github.com/microsoft/tslib/blob/1.10.0/tslib.es6.js

Update: Since some time passed, it is better to update version to 2.2.0 (based on last comments) or the latest.

Alex Vovchuk
  • 2,828
  • 4
  • 19
  • 40
29

Assuming your tslib is installed correctly and up to date, you might still get this error in VS Code if the editor is using a different Typescript version.

(taken from zok's answer on this SO question)

Open Command Palette (Cmd+Shift+P on Mac. Focused file must be .ts or .tsx otherwise it won't show the option to change version) Select "TypeScript: Select TypeScript Version..." It shows VSCode's TS version and Workspace's (project) one, pick the workspace one

8

This error might happen if you have in your tsconfig.json file :

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

If for any reason you can't upgrade to es6, setting importHelpers to false will make the error go away ...

Etienne Coumont
  • 518
  • 7
  • 11
  • One reason in my case is that the third party API I use instantiates objects without the word "new". – horiatu Feb 25 '22 at 15:12
2

from right side down hover on curly braces beside of TypeScript and then click on version it will give you few options, generally related to project just select version and it will work fine

asifaftab87
  • 1,315
  • 24
  • 28
1

for yarn users: yarn upgrade tslib@latest

Itay Tur
  • 683
  • 1
  • 15
  • 40
0

you may need to upgrade to tslib@2.2.0

user2734839
  • 207
  • 3
  • 7
0

Just make sure tslint is enabled in the bottom of vscode editor options

0

Ran into this issue with a dependency and resolved it by updating its tsconfig.ts with the path to the top level lastest tslib.

"importHelpers": true,
"paths": {
  "tslib": [ "../tslib/tslib.d.ts" ]
}
kevwig85
  • 53
  • 5