javascript - syntaxen kräver en importerad hjälpare som heter __spreadArrays


När jag försöker använda spridning i TypeScript som:

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

Jag får en varning med röd markering från Visual Studio Code:

the syntax requires an imported helper named __spreadArrays

typescript version: "2.3.4"
target: "es5"

Jag tror att detta problem är löst i senare versioner, men just nu kan jag inte migrera. Hur kan jag fixa det?

Notera: Projektet kompileras bra och fungerar. Men rött understrykande i VS Code är irriterande.

Svar #1

I mitt fall var problemet target: "es5" i compilerOptions i tsconfig.json.

Så jag ändrar det till es6 för att få det att fungera utan att lägga till beroende.

Svar #2

Snabb lösning, kort svar

npm install tslib@latest --save

Uppdatera

Jag fick det här problemet igen (nu med tslib version 2.2.0) efter att ha uppdaterat VS Code, att uppdatera igen löste problemet.

Original

Jag hade detta problem med tslib version 1.14.1

npm update tslib --save gjorde egentligen ingenting

npm install tslib@latest --save gjorde jobbet, det uppdaterade till version 2.2.0

Svar #3

För VS Code är notifikationen baserad på tsLib-exporterna. Egentligen händer inget dåligt utan att göra något, det är bara brist på typning.

Lösning: Uppdatera tsLib-beroendet för att bli av med markeringen. I mitt fall var det version 1.9.0. Uppdatering till 1.10.0 löste problemet.

__spreadArrays lades till i 1.10.0 tsLib-version: https://github.com/microsoft/tslib/blob/1.10.0/tslib.es6.js

Uppdatering: Eftersom en tid har gått är det bättre att uppdatera versionen till 2.2.0 (baserat på senaste kommentarerna) eller till senaste.

Svar #4

Förutsatt att din tslib är korrekt installerad och uppdaterad, kan du fortfarande få detta fel i VS Code om redigeraren använder en annan version av Typescript.

(tagen från zoks svar på denna SO-fråga)

Öppna kommandopaletten (Cmd+Shift+P på Mac. Den fokuserade filen måste vara .ts eller .tsx annars kommer inte alternativet att ändra version visas) Välj "TypeScript: Välj TypeScript-version..." Det visar VSCode:s TS-version och arbetsytans (projektets) version, välj arbetsytans version

Relaterade artiklar