Visual Studio 2017 MSBUILD报TS1005错误 高版本TS SDK能否不修改项目配置解决
不能,仅在系统路径安装高版本TypeScript无法在不修改项目配置的前提下解决该报错。
你当前的项目是基于MSBuild构建的.NET关联TypeScript项目,csproj工程文件中已经固定了TypeScript构建版本为2.5,构建时MSBuild会优先读取项目配置指定的版本号,加载对应版本的编译工具,不会自动选用SDK路径下的更高版本。
你用到的可选链?.语法从TypeScript 3.7版本才正式纳入官方支持,低版本编译器无法识别该语法,会将其误认为是三元运算符的开头,因此抛出「期望得到冒号」的TS1005错误。
解决方案
你可以根据需求选择以下任意一种方案解决问题:
- 方案1:不升级TypeScript版本,修改语法兼容低版本
直接替换可选链写法即可消除报错,两种常用兼容写法如下:- 三元表达式写法,对应你的示例代码可改为:
var text = objectStruct ? objectStruct.property1 : undefined;- 多层可选链(如
a?.b?.c)可以用逻辑与简写,和可选链短路逻辑一致:
var text = a && a.b && a.b.c; - 方案2:保留可选链语法,修改项目配置升级TypeScript版本
打开项目根目录的.csproj工程文件,找到<TypeScriptToolsVersion>2.5</TypeScriptToolsVersion>配置节点,将版本号修改为你已安装的3.7以上的TypeScript版本号,保存后重新构建即可调用对应高版本的编译工具。若项目使用npm管理依赖,还需同步升级本地package.json中的typescript依赖版本到对应版本,避免开发阶段编辑器报语法错误。
内容的提问来源于stack exchange,提问作者Prasool
相关产品推荐
相关产品推荐

