如何在虚拟函数中定义Component
的类型?
@Component({
templateUrl: 'a'
})
export class MyApp {
}
function dummy(component: any) {
....
}
dummay(MyApp);
答案 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);