【问题标题】:How to Import Intellisense files into vsCode (Visual Studio Code)如何将 Intellisense 文件导入 vsCode (Visual Studio Code)
【发布时间】:2015-07-10 14:04:51
【问题描述】:

我不确定我是否理解智能感知在 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')

【问题讨论】:

    标签: node.js express javascript-intellisense visual-studio-code


    【解决方案1】:

    我通过从https://github.com/borisyankov/DefinitelyTyped 下载express.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 package manager 看起来不错,使用它。

    【讨论】:

      【解决方案2】:

      更新: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 定义。

      你可以按照here的说明安装tsd。

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

      $ tsd install express --save
      

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

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

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

      现在我得到了智能感知。

      【讨论】:

      • 对不起,但这并不能回答问题。我有同样的问题并使用 TSD。使用 TypeScript 时,似乎无法为使用语法“var xxx = require('yyy');”导入的模块获取智能感知。智能感知仅在使用语法“import xxx = require('yyy');”时出现但随后生成的 JS 包含一个不存在的“define(...)”函数...(更不用说“require”关键字没有显示为蓝色,如屏幕截图所示)。
      • @rama intellisense 使用 var xxx = require('yyy'); 语法对我来说工作正常。
      • 由于某种原因不适合我stackoverflow.com/questions/35282551/…
      • 有没有办法自动引用它们,还是我总是需要把它添加到我的文件顶部?
      • "/// .d.ts 的引用随着 jsconfig.json 的引入,您不再需要在每个文件中使用 /// 引用。因为文件集在 jsconfig.json 中定义, VS Code 知道哪些文件和符号是您项目的一部分。” code.visualstudio.com/Docs/languages/…
      【解决方案3】:

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

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

      【讨论】:

      • 当我在 vs 代码项目的 .js 文件中创建类型时,灯泡没有出现。
      【解决方案4】:

      2016 年 1 月,“tsd”包已弃用。改用“typings”包。

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

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

      【讨论】:

        【解决方案5】:

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

        发生了什么?

        显式项目模式中,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 的 typescript 等效项是 tsconfig.json,它还将编辑器设置为显式项目模式。

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

            文件示例内容:

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

            请参阅jsconfig.json 参考 VSCode here.

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-07-17
            • 2016-07-21
            • 2016-05-14
            • 2019-11-05
            • 2018-03-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多