Visual Studio 2022如何确定用于智能感知目的的TypeScript版本?

11

我正在使用Visual Studio 2022处理一个包含Node应用程序的Web项目的现有解决方案。

package.json文件中,该应用程序配置为使用TypeScript 3.8.3 npm包。在一个TypeScript文件中,我使用了可选链语法,这应该是自TypeScript 3.7版本以来支持的,但是IDE将其标记为错误"TS1109:Expression expected"。如果相关的话,Node版本是14.17.0。 没有全局安装任何TypeScript版本。

此页面指出:

默认情况下,Visual Studio 2022提供JavaScript和TypeScript文件的语言支持,以驱动IntelliSense,无需任何特定的项目配置

对于编译TypeScript,Visual Studio使您能够选择在每个项目上使用哪个版本的TypeScript。

在MSBuild编译方案中,TypeScript NuGet软件包是向项目添加TypeScript编译支持的推荐方法。Visual Studio将在您第一次向项目添加TypeScript文件时提供添加此软件包的选项。此软件包也可随时通过NuGet软件包管理器获得。当使用NuGet软件包时,相应的语言服务版本将用于支持您的项目。注意:此软件包的最低支持版本为3.6。

针对npm配置的项目可以通过添加TypeScript npm包来指定其自己的TypeScript语言服务版本。您可以在支持的项目中使用npm管理器指定版本。注意:此软件包的最低支持版本为2.1。

TypeScript SDK已在Visual Studio 2022中停用。依赖于SDK的现有项目应升级为使用NuGet软件包。对于无法立即升级的项目,SDK仍可在Visual Studio Marketplace和Visual Studio安装程序的可选组件中获取。

我的理解是,Visual Studio应该尊重npm包中指定的TypeScript版本。但是,由于某种原因,编辑器无法识别应在3.8中可用的语法。

我的理解是否正确?应该怎么做才能使Visual Studio 2022在.ts文件中识别可选链语法?


更新:由于显然问题不够清晰。
Visual Studio CODE 默认使用与其捆绑的 Typescript 版本来提供语言支持(请注意:您仍需要 tsc 编译器来实际编译代码)。如果项目的根文件夹或其他路径中安装了 Typescript 版本,则编辑器可以自动检测到它。
问题是如何在使用VS2022时获得类似的行为。为测试目的,我创建了一个新的空Angular项目。默认情况下,该项目配置为使用Typescript版本4+。我编辑了package.json文件以降级为3.5.1,并运行npm install以确保项目节点文件夹已更新。在这种情况下,即使项目现在使用TS 3.5.1(支持仅添加在3.7中),Intellisense仍然可以识别可选链接语法。
比较两个项目文件,我可以看到另一个包括一个“Last”最后,我认为这是对旧sdk支持的引用。从我所看到的:
  • 有 Last 似乎使Visual Studio 永远 不会识别可选链接语法,即使使用更新的 Typescript 版本
  • 删除这一行似乎使 Visual Studio 总是 可以识别可选链接语法,即使使用旧的 Typescript 版本
顺便说一下,两个项目都没有在属性窗口中显示任何“Typescript 构建”设置。

enter image description here

再次强调问题很简单: 如何指示Visual Studio 2022使用在项目本地安装的Typescript版本,而不使用过时的外部sdk或者污染项目并试图覆盖VS默认行为的NuGet包?


不确定完整版的Visual Studio是否有此功能,但在VS Code中,您可以在窗口右下角找到一个按钮,用于更改TypeScript版本:https://i.imgur.com/X9MZC2V.png - Nicholas Tower
2
是的,那个按钮在Visual Studio 2022中不可用 @NicholasTower - SPArcheon
1
你尝试过使用TypeScript NuGet包吗? - Chino Chang
1个回答

3
我刚在 VS 2022 中发现了以下警告。由于我暂时没有时间升级到 MSBuild 包,所以我使用了 VS-Installer 安装了缺失的 TypeScript SDK。

enter image description here

然后我就可以像在旧版本中一样,在项目属性选项卡上设置Typescript版本了。

enter image description here


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