Typescript中的数据类型可存储任何组件

时间:2020-06-06 11:08:23

标签: javascript angular typescript

在Typescript中考虑此方法。

public openComponent(component: any, data: ComponentData): void {

    this.modalService.open(component);
}

这将尝试打开模态中的任何给定角度分量。只想知道是否有一种方法可以摆脱any中的component: any并进行输入吗?

简而言之,Typescript中是否有数据类型可以存储任何组件引用?

2 个答案:

答案 0 :(得分:2)

我认为您需要Type

public openComponent<T>(component: Type<T>, data: ComponentData): void {
    this.modalService.open(component);
}

答案 1 :(得分:2)

科斯坦科的答案是正确的,只是想给您一个替代方案,一个组件就是一个类,因此可以像这样键入

/** Interface that can be used to generically type a class. */
export interface ComponentType<T> {
    new (...args: any[]): T;
}

然后,这也应该起作用:

public openComponent<T>(component: ComponentType<T>, data: ComponentData): void {
    this.modalService.open(component);
}

在某些情况下很有用。