Typescript定义了泛型构造函数

时间:2016-04-22 04:46:02

标签: typescript

我正在尝试将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()

将函数与类型相关联的正确语法是什么?

1 个答案:

答案 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")