我正在尝试将Typescript用于具有伪类的JS库,其中extend()
函数提供继承。我坚持如何将不同的构造函数传递给新的“类”:
type A = (param1: string, param2: number);
type B = (param3: number, param4: number);
interface BaseClass {
extend<Constructor>(): {
new(); // How would I associate this function with type Constructor?
}
}
var NewClass = BaseClass.extend<A>();
new NewClass('Hello world', 3); // type checked against type A
var SecondClass= BaseClass.extend<B>();
new SecondClass(4, 5); // type checked against type B
我试过这个:
interface BaseClass {
extend<Constructor>(): {
new(): Constructor;
}
}
但是,期望new NewClass()
返回类型A.
我试过这个:
interface BaseClass {
extend<Constructor>(): {
new<Constructor>();
}
}
但是没有输入检查new NewClass()
。
将函数与类型相关联的正确语法是什么?
答案 0 :(得分:0)
找出new()
构造函数的变通方法。我更改了类型以包含new
关键字本身:
type A = {
new(param1: string, param2: number);
}
type B = {
new(param3: number, param4: number);
}
然后我可以像extend()
那样从interface BaseClass {
extend<Constructor>(): Constructor;
}
调用返回构造函数:
input.setInputMask("0009.000 m")