Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeScript: SyntaxError: "Unexpected token" message in console

Why this code doesn't work?

I have the following 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}`);

when I try to run it with

node app.ts

I have the next:

[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

But I expect:

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

TypeScript Version 1.8.10

like image 508
venber Avatar asked Sep 29 '16 16:09

venber


People also ask

Why do I get unexpected token error?

Not follow them throws an error.An unexpected token occurs if JavaScript code has a missing or extra character { like, ) + – var if-else var etc}. Unexpected token is similar to syntax error but more specific. Semicolon(;) in JavaScript plays a vital role while writing a programme.

How do I fix unexpected token in JSON error?

The "Unexpected token u in JSON at position 0" error occurs when we pass an undefined value to the JSON. parse or $. parseJSON methods. To solve the error, inspect the value you're trying to parse and make sure it's a valid JSON string before parsing it.


2 Answers

You need to compile your code first.

tsc app.ts

Then run it with

node app.js

TypeScript is a transpiled language. tsc, the typescript compiler, transpiles the TypeScript source to JavaScript. Nodejs is a JavaScript environment which wraps the V8 virtual machine.

like image 104
Martin Avatar answered Oct 24 '22 18:10

Martin


You are running the code with NodeJS. You aren't transpiling it from TypeScript to JavaScript, so you are trying to treat your TypeScript as if it were JavaScript.

That might be OK, since TypeScript is a superset of JavaScript. In this particular case, your code also happens to be valid JS.

The destructuring assignments you are trying to use are an ES6 feature that are only supported in NodeJS from 6.5 onwards.

You need to upgrade NodeJS to a newer version.

Alternatively, transpile the TypeScript to ES5 with tsc app.ts

like image 38
Quentin Avatar answered Oct 24 '22 19:10

Quentin