Node能够运行以下内容而不会出现错误(node hello-world.ts
):
var f = () => {
console.log('Hello World!');
};
f();
然而,当我尝试这个文件时:
interface Accountable {
getIncome() : number;
}
我得到以下异常:
interface Accountable {
^^^^^^^^^^^
SyntaxError: Unexpected identifier
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:414:25)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:136:18)
at node.js:963:3
我尝试将--target ES5
和ES2015
添加到TSC设置页面,但没有效果。
答案 0 :(得分:1)
将我的评论写成答案。
node.js没有对TypeScript的内置支持,也没有内置支持将TypeScript自动转换为普通Javascript。因此,在node.js中运行它们之前,必须首先转换TypeScript文件。
您的第一个代码示例有效,因为它是合法的ES6 Javascript语法,因此node.js可以直接运行它。
答案 1 :(得分:0)
我在使用VS Code和WebStorm时都遇到了相同的问题。 感谢cdbjorin,我可以通过更改Package.json文件中的一行来使其工作:
...
"name": "myProject",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./myScript.ts"// <--
},
...
收件人:
"start": "ts-node ./myscript.ts"
或者在这种情况下,只需使用ts-node myScript.ts
来运行它;
希望这会有所帮助