如何将 Intellisense 文件导入 vsCode(Visual Studio 代码)

How to Import Intellisense files into vsCode (Visual Studio Code)

我不确定我是否理解 intellisense 如何为 Microsoft 的新 vsCode 文本编辑器工作。在 "Great Code Editing Experience" 标题下的 docs 中,它在节点全局变量 __dir 下显示警告,并提供灯泡建议以添加对一个 d.ts 文件,以便您可以获得节点的智能感知:

我有两个问题:

1 - 如何直接导入 DefinitelyTyped 文件 (d.ts)(没有编辑建议),或者我是否必须从 github 源复制它们并将它们放入打字目录?

2 - 我可以获得任何具有打字稿定义的库的智能感知吗?我尝试了下面的方法,但是当我输入 express.when. 时,我没有得到任何智能感知。但是,我确实获得了节点智能感知。

/// <reference path="../typings/node/node.d.ts"/>
/// <reference path="../typings/express/express.d.ts" />

var when    = require('when')
  , express = require('express')
  , gulp    = require('gulp')

我通过从 https://github.com/borisyankov/DefinitelyTyped 下载 express.d.ts 文件并使用相对于我的项目目录的路径引用它来获得与 express 一起使用的 express intellisense:

/// <reference path="express.d.ts"/>

我仍在尝试查找 /typings 指的是什么。将 d.ts 文件配置为项目设置的一部分也可能很好。

编辑:

找到了。

~/Downloads/VSCode-osx
▶ find . -type d -name "typings"
./Visual Studio Code.app/Contents/Resources/app/node_modules/applicationinsights/Scripts/typings

所以他们默认将 nodeasyncapplicationInsights 捆绑到 OSX .app 中。您想要的任何其他内容我想您可以像我上面那样简单地包括在内。

编辑编辑:

@kurtcorbett 提到的 tsd package manager 看起来不错,使用它。

更新:2016 年 8 月:TSD 现已贬值。而是使用 https://www.npmjs.com/package/typings

npm install typings --global

如果使用 2016 年 7 月 29 日发布的 VS2015 NodeJS v1.2,则在首次使用时会自动安装 typings-core@1.3.1:

Executing command 'npm install "C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\EXTENSIONS\MICROSOFT\NODE.JS TOOLS FOR VISUAL STUDIO.2\TypingsAcquisitionTool"
ntvs-typings-acquisition-tool@1.0.0 ..\..\..\..\..\node_modules\ntvs-typings-acquisition-tool
├── minimist@1.2.0
└── typings-core@1.3.1 (array-uniq@1.0.3, thenify@3.2.0, zip-object@0.1.0, popsicle-status@2.0.0, popsicle-retry@3.2.1, listify@1.0.0, promise-finally@2.2.1, xtend@4.0.1, graceful-fs@4.1.5, throat@3.0.0, lockfile@1.0.1, strip-bom@2.0.0, sort-keys@1.1.2, string-template@1.0.0, make-error-cause@1.2.1, any-promise@1.3.0, has@1.0.1, rc@1.1.6, object.pick@1.1.2, debug@2.2.0, mkdirp@0.5.1, invariant@2.2.1, configstore@2.0.0, parse-json@2.2.0, touch@1.0.0, detect-indent@4.0.0, is-absolute@0.2.5, popsicle-proxy-agent@3.0.0, rimraf@2.5.4, popsicle@8.0.4, typescript@1.8.7)

-----原答案-----

Typescript 定义文件有一个包管理器。这是一个社区驱动的存储库,其中包含许多流行库的 Typescript 定义。

您可以按照说明安装tsd here

全局安装 tsd 后,您可以在命令行中从项目根目录安装包,如下所示:

$ tsd install express --save

这将创建一个 typings 目录(如果不存在)并添加一个包含 express.d.ts 文件的 express 目录。

它还会创建一个 tsd.d.ts 文件,其中包含对所有 tsd 文件的引用。如果我再安装几个 tsd,这就是它的样子。

现在要访问我的 tsd 文件,我需要做的就是在我的代码顶部使用 /// <reference path="typings/tsd.d.ts" />

引用它们的路径

现在我有了智能感知。

我所做的是触摸灯泡并选择表示将对 node/node.d.ts 的引用添加到项目的选项。

之后我就在编辑器的顶部写了:///,它对我有用。

2016 年 1 月 "tsd" 包已弃用。请改用 "typings" 包。

https://github.com/DefinitelyTyped/tsd/issues/269

并且您可以在 VS Code(分机安装)中找到两个扩展 - Typings InstallerTypings 这有助于安装 d.ts 从 VS Code 轻松定义文件。

检查您是否在显式项目模式下工作(REF:https://code.visualstudio.com/Docs/languages/javascript#_javascript-projects-jsconfigjson

发生了什么事?

Explicit Project Mode 中,VS Code 使用 typings 文件夹下的 "main.d.ts" 文件进行智能感知。该文件将引用其他定义文件,因此智能工作完美。在我的例子中,main.d.ts 看起来像下面的

/// <reference path="main/ambient/express-serve-static-core/index.d.ts" />
/// <reference path="main/ambient/express/index.d.ts" />
/// <reference path="main/ambient/node/index.d.ts" />
/// <reference path="main/ambient/serve-static/index.d.ts" />

文件范围模式中,VS Code 不会检查类型定义,因此没有智能。在这种情况下,要添加智能,当您手动引用定义时,引用标签会派上用场。如果您手动引用,请引用类型下的 main.d.ts 而不是为特定库定义。这将使您的代码的引用密度降低。

另请注意,jsconfig.json 的打字稿等价物是 tsconfig.json,这也会将编辑器设置为显式项目模式。

如果您想自动安装包的类型定义,您可以下载 Types auto installer 扩展。它会监视您的 package.jsonbower.json 并自动为您安装类型。

我认为这个扩展最好的部分是你不必在代码中包含 /// reference 行,因为它通过 npm 安装类型。

您可以在 2017 年 4 月发布后使用 jsconfig.json 文件实现此目的。

文件示例内容:

{
 "typeAcquisition": {
     "include": [
         "jquery",
          "underscore"
     ]
   }
}

请参阅 jsconfig.json 参考 VSCode here.