新公司里接手的项目非常古老,但经常会遇到一种奇怪的现象,VS Code用着用着,TypeScript就罢工不显示错误提示了。
多次测试后发现是因为,该项目中其实不单纯是一个项目,包含多个tsconfig.json,在前端项目中ts文件中能正常使用,一旦打开了后端项目的ts文件,直接导致前后端的ts文件集体罢工。在Initializing 'ts/tsconfig.json'、Analyzing 'xxx.ts' and its dependencies中无限loading,连最简单的let i = 0; i = 'aaa'; 都出不来报错,鼠标悬停一直显示:(loading...) let i: number。
用AI查了半天,结果发现Ctrl+Shift+P点击TypeScript: Select TypeScript Version选择Use Workspace Version 4.6.3,就能正常显示报错了。
接着想分析原因,所以用npm install typescript@5.9.3 -D测试一样出不来,切回npm install typescript@4.6.3 -D又正常了。
由于花了太多时间,再查下去也没有任何意义,就说说ChatGPT给的结果吧:
80% 的可能:TS 5.x/6.x 的 Project Diagnostics / Language Service 被项目拖进了异常状态。
15% 的可能:项目里某个全局声明 / 类型依赖图触发了 TS5+ 的性能或兼容性问题。
5% 的可能:VSCode 设置或扩展影响 但概率已经下降很多了。
反正最终结论就是,第一次打开此项目时,手动去切TypeScript的版本,别让默认使用Use VS Code's Version 6.0.3影响了ts解析就可以了。