32

我不确定我是否了解智能感知如何在 Microsoft 的新 vsCode 文本编辑器中工作。在“伟大的代码编辑体验”标题下的文档中,它在节点全局变量下显示警告,并提供灯泡建议以添加对 d.ts 文件的引用,以便您可以获得节点的智能感知:__dir

在此处输入图像描述

我有两个问题:

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

2 - 我可以为任何具有打字稿定义的库获得智能感知吗?我尝试了以下方法,但是当我输入express.or时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')
4

7 回答 7

49

更新: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\1.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 。

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

$ tsd install express --save

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

截屏

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

在此处输入图像描述

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

在此处输入图像描述

现在我得到了智能感知。

在此处输入图像描述

于 2015-05-01T19:06:39.663 回答
16

2016 年 1 月,“tsd”包被弃用。改用“打字”包。

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

您可以在 VS Code (ext install) 中找到两个扩展 - Typings InstallerTypings,它们有助于从 VS Code 轻松安装 d.ts 定义文件。

于 2016-02-28T21:59:46.890 回答
4

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

文件示例内容:

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

请参阅此处jsconfig.json的 VSCode 参考

于 2017-06-29T14:53:09.757 回答
3

检查您是否在显式项目模式下工作(参考: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" />

File Scope Mode中,VS Code 不会检查类型定义,因此没有智能。在这种情况下,为了增加智能,当您手动引用定义时,引用标签会派上用场。如果您手动引用,请参阅类型下的 main.d.ts,而不是为特定库进行定义。这将使您的代码的引用密度降低。

另请注意,jsconfig.json 的 typescript 等效tsconfig.json,它还将编辑器设置为显式项目模式。

于 2016-05-02T11:08:07.683 回答
1

我通过从https://github.com/borisyankov/DefinitelyTypedexpress.d.ts下载文件并使用相对于我的项目目录的路径引用它来使用 express 智能感知:

/// <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 包管理器看起来不错,使用它。

于 2015-04-30T20:25:07.497 回答
1

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

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

于 2017-06-02T20:40:12.383 回答
0

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

之后我只是在编辑器顶部写了: /// 它对我有用。

于 2016-01-01T04:13:28.423 回答