TypeScript:SyntaxError:控制台中的“意外令牌”消息

时间:2016-09-29 16:05:08

标签: javascript typescript destructuring

为什么此代码不起作用?

我有以下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}`);

当我尝试用

运行它时
  

node app.ts

我有下一个:

[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

但我希望:

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

TypeScript版本1.8.10

3 个答案:

答案 0 :(得分:5)

您需要先编译代码。

tsc app.ts

然后用

运行它
node app.js

答案 1 :(得分:3)

您正在使用NodeJS运行代码。您没有将它从TypeScript转换为JavaScript,因此您尝试将TypeScript视为JavaScript。

这可能没问题,因为TypeScript是JavaScript的超集。在这种特殊情况下,您的代码也恰好是有效的JS。

您尝试使用的destructuring assignments是ES6功能,仅在6.5以后的NodeJS中受支持。

您需要将NodeJS升级到更新版本。

或者,使用tsc app.ts

将TypeScript转换为ES5

答案 2 :(得分:1)

为了让自己更轻松并运行一个命令,您可以使用 ts-node 库。安装到您的项目后,您只需运行以下命令:

TaskletStep