我正在尝试记录以下代码,但我似乎无法使 JSDoc 记录该类,甚至无法引用它的存在。
// SomeMixin.js
export default superclass => class SomeMixin extends superclass {
// class code goes here
func() {}
};
Run Code Online (Sandbox Code Playgroud)
import SomeMixin from './SomeMixin';
import { EventEmitter } from 'events';
/**
* @param {SomeMixin} bar
*/
function foo(bar) {
}
class MyClass extends SomeMixin(EventEmitter) {}
const item = new MyClass();
foo(bar);
Run Code Online (Sandbox Code Playgroud)
我如何记录这段代码,以便 JSDoc 看到它SomeMixin可以被继承(是一个类),并且当我创建一个MyClass它的实例时,它继承了方法func。
在/sf/answers/3663505471/的帮助下我得到了:
// SomeMixin.js
/**
* @template T
* @typedef {new(...args: any[]) => T} Constructor
**/
/**
* @template {Constructor<{}>} T
* @param {T} superclass
*/
function mixin(superclass) {
return class SomeMixin extends superclass {
// class code goes here
func() {}
};
}
export default mixin
Run Code Online (Sandbox Code Playgroud)
// index.js
import createMixin from "./SomeMixin";
import { EventEmitter } from "events";
/**
*
* @param {MyClass} bar
*/
function foo(bar) {
bar;
}
class MyClass extends createMixin(EventEmitter) {}
const item = new MyClass();
foo(item);
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的一个版本。不是最好的解决方案,但在 VSCode 中我可以func看到EventEmitter.
// SomeMixin.js
import { EventEmitter } from "events";
/**
* @param {EventEmitter} superclass
*/
function mixin(superclass) {
/**
* @extends EventEmitter
*/
class SomeMixin extends superclass {
// class code goes here
func() {}
}
return SomeMixin;
}
export default mixin;
Run Code Online (Sandbox Code Playgroud)
// index.js
import SomeMixin from "./SomeMixin";
import { EventEmitter } from "events";
class MyClass extends SomeMixin(EventEmitter) {}
const item = new MyClass();
Run Code Online (Sandbox Code Playgroud)
但仍然需要弄清楚如何使用通用类型。也许这个问题可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |