Typescript函数声明使用new()

时间:2016-08-16 03:23:19

标签: angular typescript

以下Typescript代码段中dialogComponent的类型声明的含义是什么?

createDialog(dialogComponent: { new(): DialogComponent }) :
    Promise<ComponentRef<DialogComponent>> { ... }

(来自https://www.lucidchart.com/techblog/2016/07/19/building-angular-2-components-on-the-fly-a-dialog-box-example)。

我发现以下问题扩展了目前为止收到的答案:How to create a new object from type parameter in generic class in typescript?

1 个答案:

答案 0 :(得分:2)

使用泛型在TypeScript中创建工厂时,必须通过构造函数引用类类型。因此,不要使用类型:T ,而是使用类型:{new():T;}

function create<T>(c: {new(): T; }): T {
    return new c();
}

here的更多详情。