"tsc" 命令显示 "SyntaxError: Unexpected token ?"。

9

我是Typescript的新手, 我尝试通过运行命令tsc filename.ts将Typescript文件转换为Javascript文件。 但是它显示错误。

C:\Program Files (x86)\Nodist\bin\node_modules\typescript\lib\tsc.js:93
  for (let i = startIndex ?? 0; i < array.length; i++) {
                           ^

SyntaxError: Unexpected token ?
    at Module._compile (internal/modules/cjs/loader.js:749:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)
    at Module.load (internal/modules/cjs/loader.js:672:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:612:12)
    at Function.Module._load (internal/modules/cjs/loader.js:604:3)
    at Module.require (internal/modules/cjs/loader.js:711:19)
    at require (internal/modules/cjs/helpers.js:14:16)
    at Object.<anonymous> (C:\Program Files (x86)\Nodist\bin\node_modules\typescript\bin\tsc:2:1)
    at Module._compile (internal/modules/cjs/loader.js:805:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)

我尝试安装 Node 至其最新版本。

3
只是一个猜测:是不是使用的是旧版本的Node.js,还不支持“??”运算符? - Flash Thunder
4
只是一个猜测:是不是使用的是旧版本的Node.js,还不支持"??"运算符? - Flash Thunder
1
^^ 在3年前的版本14.0中引入了节点...所以,你肯定在使用旧的节点版本 - Jaromanda X
3
^^ 在3年前的14.0版本中引入了节点...所以,你肯定是在使用一个旧的节点版本 - Jaromanda X
2
我已经在GitHub上提交了一个关于这个问题的issue:https://github.com/microsoft/TypeScript/issues/54686 - Dai
显示剩余8条评论
3个回答

5
确实,Veerendra是对的,TypeScript现在需要Node 14.17作为“最低运行要求”。我刚刚从我的系统(Ubuntu 22)彻底卸载了nodejsnpmtypescript等,并使用nvm安装了最新的LTS版本的nodejs。直接转到自述文件中的这一行以查看安装nvm的命令。
使用nvm,您可以选择安装任何版本的nodejs。安装特定版本的nodejs也会同时安装npm。我选择安装了v18.17.0版本。
$ nvm install v18.17.0

然后像往常一样使用npm安装包,现在tsc命令可以正常工作了。

4

2
在Node 14中添加了对??的支持,这是比当前LTS版本旧的几个版本。解决方案是升级Node,而不是降级TS。 - Mike 'Pomax' Kamermans

1
尽管在链接中建议使用node v18,但我仍然遇到了相同的问题。
我将我的typescript版本从5.1降级到5,问题得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接