You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

  1. 全局安装依赖:
npm install -g ts-node typescript
  1. 直接运行你的文件:
ts-node test.ts

方式2:编译为JavaScript后运行

如果不想用ts-node,可以先把TS编译成JS再用Node执行:

  1. 初始化TypeScript配置文件(首次使用):
tsc --init
  1. 编译你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:21:23