定义TypeScript函数时出现Unexpected token ':'语法错误求助
问题:直接用Node运行TypeScript文件出现语法错误
我正在学习Josh Goldberg所著的《Learning Typescript》,按照书中示例编写TypeScript函数定义代码:
//index.ts let songLogger: (song: string) => void; songLogger = (song) => { console.log(`${song}`); } songLogger("Heart of Glass");
直接用node运行index.ts时出现如下错误:
PS C:\Typescript> node index.ts C:\Typescript\index.ts:1 let songLogger: (song: string) => void; ^ SyntaxError: Unexpected token ':' at internalCompileFunction (node:internal/vm:73:18) at wrapSafe (node:internal/modules/cjs/loader:1178:20) at Module._compile (node:internal/modules/cjs/loader:1220:27) at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) at Module.load (node:internal/modules/cjs/loader:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47
我找不到语法错误的原因,请问我哪里操作错了?
原因与解决方法
错误原因
Node.js仅支持执行标准JavaScript代码,无法识别TypeScript特有的语法(比如代码里的:类型注解)。直接用node命令运行.ts文件时,Node会将其当作JavaScript解析,而类型注解在JS中属于非法语法,因此抛出Unexpected token ':'错误。
解决方法
方法一:先编译再运行(官方标准流程)
- 全局安装TypeScript编译器:
npm install -g typescript - 编译TypeScript文件为JavaScript:
执行后会在同目录生成tsc index.tsindex.js文件(已移除类型注解的标准JS代码)。 - 运行编译后的JS文件:
node index.js
方法二:用ts-node直接运行TypeScript
若想跳过编译步骤直接运行.ts文件,可使用ts-node工具:
- 全局安装ts-node:
npm install -g ts-node - 直接运行TypeScript文件:
ts-node index.ts
内容的提问来源于stack exchange,提问作者JarochoEngineer
相关产品推荐
相关产品推荐

