javascript - 如何正确导出聚合的 javascript 类
问题描述
我正在使用 VSCode 1.41.1(2019 年 11 月发布)。我在一个文件夹中有一些 JavaScript 类,如下所示:
一个.js
class A {
constructor() {
this.m = 2;
}
}
export default A;
b.js
class B {
constructor() {
this.n = 4;
}
}
export default B;
我正在尝试将它们收集到一个库中,以便我可以执行类似 Lib.A 的操作来引用 A 类。
我目前的方法是这样的:
lib.js
import A from './a';
import B from './b';
class Lib {};
Lib.A = A;
Lib.B = B;
export default Lib;
然后我想在外部应用程序中使用 Lib 类。我有这个文件:
应用程序.js
import Lib from './lib';
/**
* @param {Lib.A} a
* @param {Lib.B} b
*/
function foo(a, b) {
}
但是,当我将鼠标悬停在参数a
或b
上时,工具提示分别显示(parameter) a: typeof A
和(parameter) b: typeof B
,而不是(parameter) a: A
和(parameter) b: B
我期望的那样。此外,就像工具提示所暗示的那样,当我这样做时自动完成a.
显示 A 类属性,而不是 A 的实例(带有成员)。m
我有一个更复杂的项目,它的导入/导出代码没有改变,几个月前这种行为并不存在。似乎是 VSCode 更新?
或者,也许我没有组合 A 和 B 类或正确导出 Lib 类?或者也许我使用的 JSDoc 改变了参数类型的声明方式?
感谢您提供的任何帮助。
编辑:我也尝试过 Lib 导出:
const Lib = {
A,
B
};
但这使得 foo 函数参数的 VSCode Intellisense 仅显示any
为它们的类型。
另外,我看到这只是在做:
const a = new Lib.A();
智能感知确实正确地将变量a
设置为 type A
。所以也许我只是做错了 JSDoc@param
声明?
解决方案
推荐阅读
- c++ - c++ LoadLibrary 和 GetProcAddress 来自外部 DLL
- filter - 根据过滤器创建度量
- ios - Apple Pay didAuthorizePayment 委托和处理付款
- c - 估计 C 函数的未命中率
- authentication - 我不明白为什么在 ssh 公钥/私钥身份验证中,公钥在服务器上
- json - 如何使用 powershell 更改长 JSON 值中的 url?
- javascript - App.js 的渲染方法出错?React-Native 问题
- java - Java 如何在同一方法中使用 XMLStreamReader 和 XMLStreamWriter
- php - 在 php Wordpress 页脚中添加链接
- r - 棒图风量变化