javascript - TypeScript: SyntaxError: "Uventet token" melding i konsollen


Hvorfor fungerer ikke denne koden?

Jeg har følgende app.ts

var a = 1;
var b = 3;
console.log(`Before a = ${a}, b = ${b}`);

[a, b] = [b, a];
console.log(`After a = ${a}, b = ${b}`);

når jeg prøver å kjøre det med

node app.ts

Jeg har det neste:

[a, b] = [b, a];
^

ReferenceError: Invalid left-hand side in assignment
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:974:3

Men jeg forventer:

Before a = 1, b = 2
After a = 2, b = 1

TypeScript-versjon 1.8.10

Svar #1

Du må kompilere koden din først.

tsc app.ts

Kjør det deretter med

node app.js

TypeScript er et transpilerspråk. tsc, TypeScript-kompilatoren, transpilerer TypeScript-koden til JavaScript. Nodejs er et JavaScript-miljø som omslutter V8-virtuelle maskinen.

Svar #2

Du kjører koden med NodeJS. Du transpilerer den ikke fra TypeScript til JavaScript, så du prøver å behandle TypeScripten din som om det var JavaScript.

Det kan være greit, siden TypeScript er en overmengde av JavaScript. I dette tilfellet skjer det også at koden din er gyldig JS.

Destruktureringsoppgavene du prøver å bruke er en ES6-funksjon som kun støttes i NodeJS fra versjon 6.5 og nyere.

Du må oppgradere NodeJS til en nyere versjon.

Alternativt, transpiler TypeScript til ES5 med tsc app.ts

Relaterte artikler