我在Visual Studio 2017中有一个带有大型TypeScript代码库的Web项目。当我进行TypeScript构建时,我没有错误,并且生成的JavaScript是正确的。但是,我的intellisense使用基于我的tsconfig.json中配置的baseUrl
的路径显示任何导入的错误。
其他编辑'代码检查似乎与前者没有问题。我们已经确认它在VS Code和JetBrains Rider中工作。
我的tsconfig.json如下:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"strictNullChecks": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"module": "amd",
"moduleResolution": "node",
"baseUrl": "./Content/ts"
},
"exclude": [
"node_modules"
],
"compileOnSave": true
}

我已经尝试了尽可能多的不同Visual Studio设置,但似乎没有任何因素影响intellisense是否能够找到模块。同样,编译器本身在查找和构建时没有问题。
更新:忘记包含我们在.csproj文件中定义的<TypeScriptBaseUrl>
属性,设置为与tsconfig.json中相同的值。这会导致Visual Studio中的TS构建成功,但似乎不会影响Intellisense。
答案 0 :(得分:4)
原来,tsconfig.json文件需要包含在项目中才能让Intellisense满意。不确定为什么<TypeScriptBaseUrl>
设置不够好。这可能仍然是一个需要报告的错误。
答案 1 :(得分:0)
如果有人在 SDK 样式的项目中遇到类似问题,您可以将其添加到您的 .csproj
中:
<!--
Looks like we need to include tsconfig.json explicitly into the project
(as opposed to being "auto-included" by being in the project's folder),
for the Visual Studio IntelliSense to pick it up.
-->
<ItemGroup>
<Content Include="tsconfig.json" />
</ItemGroup>
假设您的 TypeScript 安装在 node_modules
中,Visual Studio IntelliSense 应该能够在尊重 tsconfig.json
的同时将其用作语言服务器。
此外,我发现禁用 Resharper 对 TypeScript 的支持很有帮助。看起来 Resharper 在支持最新的 TypeScript 版本方面滞后。转到扩展 / Resharper / 选项 / 产品和功能,取消勾选 JavaScript 和 TypeScript。
在所有这些更改后重新启动 Visual Studio。