TypeScript声明数组类型报错‘Unexpected token :’问题求助
解决TypeScript直接用Node运行报"Unexpected token ':'"的问题
错误原因
Node.js本身只能解析原生JavaScript语法,你写的let num: number | string[] = [];里的类型声明(: number | string[])是TypeScript专属语法,Node没法识别,所以直接运行.ts文件会抛出语法错误。
解决办法
有两种常用方式可以运行你的TypeScript代码:
方式1:用ts-node直接运行
ts-node是一个可以直接执行TypeScript代码的工具,无需先编译成JS:
- 全局安装依赖:
npm install -g ts-node typescript
- 直接运行你的文件:
ts-node test.ts
方式2:编译为JavaScript后运行
如果不想用ts-node,可以先把TS编译成JS再用Node执行:
- 初始化TypeScript配置文件(首次使用):
tsc --init
- 编译你的TS文件:
tsc test.ts
执行后会生成对应的test.js文件
3. 运行编译后的JS文件:
node test.js
额外提示:修正你的类型声明
你写的let num: number | string [] = [];存在类型错误,这个写法的意思是变量num要么是一个number,要么是一个string[],但你实际需要的是元素为number或string的数组,正确写法应该是:
let num: (number | string)[] = [];
完整的FizzBuzz TypeScript代码示例
let num: (number | string)[] = []; for (let i = 1; i <= 100; i++) { if (i % 15 === 0) { num.push('FizzBuzz'); } else if (i % 3 === 0) { num.push('Fizz'); } else if (i % 5 === 0) { num.push('Buzz'); } else { num.push(i); } } // 输出结果 console.log(num);
内容的提问来源于stack exchange,提问作者Ahmed Hassan
相关产品推荐
相关产品推荐

