【问题标题】:VS Code: enable javascript intellisense in typescript projectVS Code:在 typescript 项目中启用 javascript 智能感知
【发布时间】:2018-12-01 16:49:46
【问题描述】:

有没有办法在 Typescript 项目中为 Javascript 文件启用智能感知? 如果我从这样的 javascript 包中导入函数:

import foo from "js-package"

并且我在 index.js 中,我看到智能感知器拾取 JsDoc cmets 并列出该函数采用的参数; 但是,如果我在 .ts 文件中,我什么也得不到。 如何使用 VS Code 在 .ts 文件中启用 Js 智能感知?

编辑: 这就是发生的事情:

讽刺,不是吗?

【问题讨论】:

  • 你试过 tsconfig.json 中的 AllowJS 选项吗?
  • 尝试将// @ts-check添加到js文件的第一行。它可能会做你想做的事。
  • 您是否有打字或包装是否有打字稿打字?如果包没有,则类型需要包含在 @types/... 或 tsconfig 中。 (github.com/microsoft/vscode/issues/24956).(https://github.com/…

标签: typescript visual-studio-code intellisense vscode-settings javascript-intellisense


【解决方案1】:

您无需为typescript 初始化intellisense,它会自动检测您是否要明确执行您可以查看下图您可以从那里选择language

【讨论】:

  • 看看我编辑的问题:我说我不能在 .ts 文件中使用 javascript intellisense。我无法在 .ts 文件中强制将 javascript 指定为智能感知的语言...
  • 它会被自动检测到,你不需要对.ts文件中的JAVASCRIPT做任何事情
  • 你可以从我的图片中看到它没有被检测到!
【解决方案2】:

您可能希望在compiler options 中启用checkJs。 checkJs 选项让 TypeScript 编译器可以根据基本类型推断和 JSDoc 来检查 JavaScript 代码上的类型。

另一种方法是你自己删除模块:TypeScript 有 a nice documentation 关于它。

【讨论】:

  • 这不会改变任何事情。
【解决方案3】:

也许您可以选择"typescript.suggest.completeJSDocs": false。 在这种情况下,将其转为 true 可能会对您有所帮助。

https://code.visualstudio.com/docs/languages/typescript#_jsdoc-support

请记住,在将 JSDoc 用于 TypeScript 代码时,不应包含类型注释。 TypeScript 编译器只使用 TypeScript 类型注解,而忽略 JSDoc 中的注解。

【讨论】:

  • 同样的问题,仍然在悬停时显示导入模块。 :(
【解决方案4】:

您是否尝试过“IntelliCode”扩展程序?

请在此处找到链接: https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode

【讨论】:

  • 请不要只发布一些工具或库作为答案。至少在答案本身中展示how it solves the problem
  • 没什么好描述的,它在 Visual Studio Code 中添加了智能感知。我遇到了同样的问题,这个扩展在我必须处理 Angular 项目时有所帮助。但你是对的,我忘了在建议中添加插件描述。
【解决方案5】:

您确实不需要需要任何插件。只需在 tsconfig.json 中添加 typeAcquisition 即可:

{
    ...
    "typeAcquisition": {
            "enable": true
    }
}

这可以自动检测和下载 typescript 的定义文件。 我经常在更改设置时重新加载窗口(重新启动 vscode),以确保已读取设置。但这并不总是必要的。

如果使用 tsconfig.json,则默认禁用此功能 配置文件,但可以设置为启用进一步概述 以下)。 source

它之前在 typingOptions.enableAutoDiscovery 下,但被重构为 typeAcquisition.enable,如 Github issue 所示。您仍然可以在本网站上找到参考资料。我发现很难找到关于 typeAcquisition 的信息,但 schema 证明了它的存在。

缺少tsconfig.json?创建一个关注the top answer here

【讨论】:

  • 这似乎已经修复了它。我现在看到的是 jsdoc 类型信息,而不仅仅是“导入模块”的东西。
【解决方案6】:

我有一个 npm 模块的问题,它没有明确类型的类型定义。

刚才我发现,如果您在 .ts 文件中添加对 .js 文件的引用,您将获得引用文件的智能感知。

我的文件顶部是这样的:

///<reference path="../node_modules/tinkerforge/Tinkerforge.js" />
///<reference path="../node_modules/tinkerforge/lib/IPConnection.js" />

import * as tinkerforge from "tinkerforge";

let ip = new tinkerforge.IPConnection();
ip.connect();

对我来说这似乎是一种 hack,但它可以完成我想要它做的事情,而无需为此模块编写 d.ts 文件。

其他人可以试试这个并确认它有效吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多