在try 为emBind编写类型定义时,特别是extend
特性,我遇到了一个我自己无法解决的问题.到目前为止,我所掌握的是:
export declare class Deletable {
public delete(): void;
}
type Constructor<T> = new (...args: any[]) => T;
export declare class Extendable extends Deletable {
public static extend<T extends Constructor<T>>(name: string, o: unknown): new (...args: ConstructorParameters<T>) => T;
public static implement<T>(o: object): T;
}
class Lexer extends Extendable {
public constructor(i?: number) { super(); }
}
const WhiteboxLexerTrampoline = Lexer.extend<Lexer>("Lexer", {
});
操场代码是here.错误在Lexer.extend<Lexer>()
的行上:
类型‘lexer’不满足约束‘Constructor’. 类型‘lexer’不提供签名‘new(...args:any[]):lexer’的匹配项.(2344)
显然,我遗漏了一些与构造函数参数相关的内容.这要怎么写才能正确呢?
更多信息:从extend
返回的类用于从我的应用程序派生类,并在应用程序中使用,如:
export default class WhiteboxLexer extends WhiteboxLexerTrampoline {
// actual implementation of the lexer.
}