繁体   English   中英

VS Code 的智能感知很差

[英]Intellisense of VS Code is poor

您好,我使用 VS Code 已经有一段时间了,它的建议例如 Class 属性或方法有点差。 我想看看这是否应该是那样的,或者这是否只是我的问题。 我主要将它用于 JS/TS 或 JS 框架的前端开发,并且经常在我安装 npm 包并导入它们时,Intellisense 没有向我显示它们的属性,这非常蹩脚,因为在我看来这应该是它应该提供的第一支持. 它的许多其他功能都很棒,所以我想继续使用它,但如果这是假设的行为,我想我必须切换到新的 IDE。

例如,我现在正在使用 Three JS,在我看来,它具有非常可靠的 Object 定向样式,其中了解 class 具有哪些属性和方法非常重要,尽管 Intellisense 不知道除非我手动输入一次,例如:

我在文件顶部导入了三个 JS,如下所示: import * as THREE from '../node_modules/three/src/Three.js';

我正在寻找 TextureLoader,它应该是三个 class 的一种方法,当我手动输入它时,一切正常,尽管 VS Code 似乎无法识别它,这对于 IDE 来说是非常糟糕的行为。你看到的建议图片中的是它唯一建议我的。 (有一个 textureLoader typed with a small t 在开头,但那是因为我使用了一个具有该名称的变量)所以 VS Code 只建议我已经输入的东西。

在此处输入图像描述

我已经检查了 Stackoverflow 向我展示的所有相关帖子,但与此主题无关,所有错误修复仅在 VSCode 中存在字面错误时才相关,但我什至不确定这是一个实际错误。 还有很多人喜欢 VSCode 并声称它是最好的免费 IDE 我想知道为什么它甚至不能提供最基本的东西。 我记得 Eclipse 对应 Java,它向您展示了 class 的每个属性和方法。

我认为这可能是 JS 的问题,因为它没有类型,但我想我记得 Webstorm 为 JS 提供了正确的建议

所以我的问题是,这是预期的吗? Intellisense 机制是否应该不检测导入的 class 中定义的方法和变量,而只为您提供所有这些方法和变量的列表?

所以我发现这不仅仅是我的 VS Code 的问题。 VS Code 只是不知道 class 或 object 有哪些类型或方法可用。我认为它可能具有一些通过 class 运行的解析功能,并选择它的方法在建议/代码完成框中显示它,但我想这是矫枉过正。

因此,如果您使用 Typescript,则可以使用类型完成。对我来说,尽管我同时使用 Typescript 和 Three.js,但我的 VSC 中仍然没有任何有用的建议。 所以我发现 IDE 依赖于类型定义文件“[name].d.ts”,其中定义了 Typescript 的类型。 这些应该由您使用的库/包的作者提供。

如果它们不存在,您可以在其中检查此类类型是否在@types 下的 npm 注册表中可用,所以对我来说,我必须手动运行:

npm install --save-dev @types/three

它在@types/three 下为我安装了一个新目录,每三个 JS 模块都有一个 d.ts。

当您执行以下操作时:

import * as THREE from 'three';

我猜 typescript 也知道在“node_modules/@types/three”下寻找声明文件 d.ts

所以总结一下:

  • 由于 [python, ruby] 等 js 动态类型系统,没有代码完成
  • 您可以使用 typescript 完成代码,因为它有 static 类型,例如 [java, #c]
  • 必须提供一个 [name].d.ts 文件告诉 ide 如何定义 class。
  • 对于像'dom'和'window'这样的内置东西,它在安装时默认提供 typescript

如我错了请纠正我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM