Обновление
С помощью { ссылка } я получил:
// 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
// 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);
![solution 2](https://i.stack.imgur.com/aRt94.png)
Вот версия, которую я попробовал. Не лучшее решение, но в 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;
// index.js
import SomeMixin from "./SomeMixin";
import { EventEmitter } from "events";
class MyClass extends SomeMixin(EventEmitter) {}
const item = new MyClass();
![solution 1](https://i.stack.imgur.com/aKMSF.png)
Но все же, Нужно разобраться, как работать с Generi c Types. Возможно этот вопрос может помочь.