javascript - Visual Studio 2017,JavaScript智能感知不一致

标签 javascript typescript intellisense visual-studio-2017 tsconfig

TL; DR :如何在Visual Studio 2017中包含tsconfig.json文件,并且仍像默认情况下一样具有JavaScript intellisense工作,为您自己的代码和第3方库提供代码提示?是不是很烦,还是我只需要更好地了解它的工作原理?

与jQuery一样,我希望通过智能感知在JavaScript和html文件中普遍访问我自己的JavaScript namespace 。如何做到这一点?

编辑3 :
我在developercommunity.visualstudio.com上报告了此问题。请考虑投票解决此问题,以吸引Microsoft的更多关注。

编辑2 :
当前,“解决方案”是Resharper,它提供了开箱即用的期望。但是,对于Visual Studio自己提供的某种东西,以每位用户299美元/年的价格,这并不是很理想。

编辑1:
如果我对Visual Studio中的JavaScript智能感知的期望不正确,以下是我期望它如何运行的一个精心设计的示例。

假设我在./Scripts文件夹中创建了三个TypeScript文件,我们将它们分别称为A.ts,B.ts和C.ts。每个将包含其自己的 namespace :

A.ts

namespace A {
    export function f1(s: string) {
        return s;
    }
}

ts
namespace B {
    export function f1(n: number) {
        return n;
    }
}


namespace C {
    export function f1(b: boolean) {
        return b;
    }
}

在这个时间点上,人们可能希望能够开始看到其新创建的命名空间的智能感知,实际上,在A.ts,B.ts和C.ts中,您开始看到这些命名空间的智能感知。凉。

enter image description here

不幸的是,这并没有延续到其他地方,例如/Home/Index.cshtml。 Index.cshtml对A,B或C namespace 一无所知。此外,.js文件对这些 namespace 一无所知,因此需要它们各自的TypeScript声明(.d.ts)文件。

因此,我们继续将tsconfig.json文件添加到项目的根目录,并像上面一样配置它。如果我们对其中一个.ts文件执行编辑并将其保存,则会触发将相应的.d.ts文件编译到./Scripts/out文件夹中。现在,我们是否在Index.cshtml和.js文件中获得了智能感知? ...没有。

现在,您可能会认为这些文件需要包含在项目中,以便Visual Studio进行智能感知(创建时将它们排除在外)。因此,您将它们包括在项目中。智能感知?否。jQueryintellisense?否。也许它们需要与要使用它们的文件位于同一目录中? .....的种类?在很多情况下,我都遇到了这样的不一致问题:

enter image description here

不知何故,我们在C3.js(请注意:一个JavaScript文件)中获得了“A”命名空间的智能感知,而其他都不是。什么?

也许您认为自己在正确的道路上,并且在智能感知引擎方面取得了小小的胜利。但是随后您重新启动Visual Studio实例并...

enter image description here

等等...。我刚刚对'A' namespace 有了智慧。发生了什么!?

我不知道。但是在弄乱了一点之后,我尝试在.js文件的顶部放置一个import语句,突然所有的intellisense都开始为导入的文件/模块起作用。晕!

enter image description here

甚至在Index.cshtml中,我也开始收到针对导入的命名空间的智能感知。

enter image description here

但是,当我使用import语句关闭.js文件时,突然之间,我突然失去了Index.cshtml中对它们的智能感知。等等...什么?而且与JavaScript文件不同,我无法编写导入语句来接收它们的智能感知:

enter image description here

或至少……不是我自己的命名空间:

enter image description here

正是这种前后不一致的方式使我对Visual Studio的JavaScript智能感知实际上是如何工作感到困惑。我仍然不知道它是否已损坏,或者是否需要更好地了解它。

原始帖子

系统
Windows 10VS2017 15.0.0 + 26228.10启用了新的JavaScript语言服务

我一直在努力让Visual Studio 2017的JavaScript intellisense为我工作几天,但无济于事。我不知道IDE是否确实有些问题,或者我只是不太了解它。

我对how VS2017's JS intellisense作品的理解现在是通过 typescript 定义文件或.d.ts文件进行的。最终,我希望获得intellisense的帮助,以帮助我们使用自己的TypeScript / JavaScript,但现在我很乐意让它在一个新项目中始终如一地工作。

如果我创建一个新的ASP.NET MVC 4.5.2项目,则开箱即用的JS intellisense似乎可以正常工作,并且我的意思是我可以在.js文件中或之间键入美元符号($)。