Javascript 如何在类未定义、仅传递给的模块中获取intellisense?

Javascript 如何在类未定义、仅传递给的模块中获取intellisense?,javascript,ecmascript-6,visual-studio-code,es6-class,Javascript,Ecmascript 6,Visual Studio Code,Es6 Class,TL;DR:是否有办法为vscode中模块之间传递的类型/变量启用intellisense 在这个场景中,我有3个模块/文件: Test.js // Test.js export default class Test { constructor() { this.whatever = { a: "a", b: "b" }; } someFunc() { console.log(this.whatever.b); } } Oth

TL;DR:是否有办法为vscode中模块之间传递的类型/变量启用intellisense

在这个场景中,我有3个模块/文件:


Test.js

// Test.js
export default class Test {
  constructor() {
    this.whatever = {
      a: "a",
      b: "b"
    };
  }

  someFunc() {
    console.log(this.whatever.b);
  }
}
OtherTest.js

// OtherTest.js
export default arg => {
  arg.someFunc();
};
index.js

//index.js
import Test from "./Test";
import OtherTest from "./OtherTest";
const test = new Test();
OtherTest(test);

运行index.js中的代码时,控制台会按预期打印“b”

使用vscode,如何让编辑器“知道”传递给OtherTest.js中函数的是哪种变量,这样我就可以在intellisense中弹出测试类的所有成员

我想这应该是在vscode中完成的,因为类型化参数是不可能的,但除了TypeScript之外,我不知道,TypeScript不是一个选项。

根据:

默认情况下,JavaScript语言服务将分析并为JavaScript项目中的所有文件提供IntelliSense

但是,您可以在
jsconfig.json
中指定要包括或排除的文件

对于您的情况,我已经在VS代码中重新创建了您的项目,在获取OtherTesttype[image]的类型时,“开箱即用”效果良好:

编辑:但我认为问题不在VS代码中,您想知道哪种类型的变量通常会起作用

在这种情况下,您可以查看以下选项:

  • 使用静态类型语言,例如TypeScript
  • 对Javascript使用静态类型检查器,例如流
  • 使用JSDoc
  • 根据:

    默认情况下,JavaScript语言服务将分析并为JavaScript项目中的所有文件提供IntelliSense

    但是,您可以在
    jsconfig.json
    中指定要包括或排除的文件

    对于您的情况,我已经在VS代码中重新创建了您的项目,在获取OtherTesttype[image]的类型时,“开箱即用”效果良好:

    编辑:但我认为问题不在VS代码中,您想知道哪种类型的变量通常会起作用

    在这种情况下,您可以查看以下选项:

  • 使用静态类型语言,例如TypeScript
  • 对Javascript使用静态类型检查器,例如流
  • 使用JSDoc

  • 哦,是的,在index.js文件中,我从两个导入的文件中都获得了intellisense,但我希望将参数中的intellisense传递到OtherTest.js文件中:例如,我应该能够从OtherTest.js中的arg参数中看到someFunc()方法。抱歉,我已经更新了答案,不要从第一次查找JSdoc中发现问题!这是侵入性最小、最优雅的解决方案。它现在正在工作,只需要引用顶部的类型并在JSDoc中使用它。完美无瑕!谢谢哦,是的,在index.js文件中,我从两个导入的文件中都获得了intellisense,但我希望将参数中的intellisense传递到OtherTest.js文件中:例如,我应该能够从OtherTest.js中的arg参数中看到someFunc()方法。抱歉,我已经更新了答案,不要从第一次查找JSdoc中发现问题!这是侵入性最小、最优雅的解决方案。它现在正在工作,只需要引用顶部的类型并在JSDoc中使用它。完美无瑕!谢谢