如何在Angular中定义Component的类型?

时间:2018-08-30 13:13:30

标签: angular typescript

如何在虚拟函数中定义Component的类型?

@Component({
   templateUrl: 'a'
})
export class MyApp {
}
function dummy(component: any) {
     ....
}       
dummay(MyApp);

1 个答案:

答案 0 :(得分:3)

您的问题中有几个不同的项目可能需要澄清。

在您的示例中,export class MyApp {...}正在创建类型为MyApp的类。

通常,您会将类的实例传递给函数。如果这是您要尝试的操作,则它将如下所示:

function dummy(component: MyApp) {
     ....
}       
dummay(new MyApp());

如果您实际上正在尝试将类类型传递给该函数,则需要执行以下操作:

import {
  Type
} from '@angular/core';

function dummy(component: Type<any>) {
     ....
}       
dummay(MyApp);

使此功能更强大的另一种方法是,如果将可以传递给函数的组件限制为仅实现给定接口的组件。一个示例如下:

import {
  Type
} from '@angular/core';

export interface IFoo {
   id: number;
   getStuff: () => string;
}
@Component({
   templateUrl: 'a'
})
export class MyApp implements IFoo {
}
function dummy(component: Type<IFoo>) {
     const stuff = component.getStuff();
     ....
}    

dummay(MyApp);