我们想使用jsDoc注释而不是.ts文件在常规.js文件中定义mixin classes。
mixin类的一个重要方面是使用extends
将泛型类型参数约束为类构造函数。例如,上面的页面有以下TypeScript:
type Constructor<T> = new(...args: any[]) => T;
function Tagged<T extends Constructor<{}>>(Base: T) { ... }
TypeScript的jsDoc支持允许@template T
声明,但我们没有看到任何方法将T
约束为,例如,是一个类构造函数。有办法做到这一点吗?
我们愿意创建/使用.d.ts
文件来支持这一点,只要mixin声明本身可以存在于.js文件中,并且checkJs
将适当地键入 - 检查该.js文件的工作方式。
从TypeScript 2.9开始,现在可以使用TypeScript来约束模板参数(请参阅issue 24600)。因此,上述TypeScript声明将成为:
/**
* @template T
* @typedef {new(...args: any[]) => T} Constructor
**/
/**
* @template {Constructor<{}>} T
* @param {T} Base
*/
function Tagged(Base) { … }