我有一个获取类类型的函数,在创建实例之前,我需要知道此类是否实现了接口。
我知道如何检查对象实例是否实现了用objectIsInstanceOfComponentLoaded
编写的接口,我正在尝试创建 typeImplementsLoadCompleted
因此对于以下界面
export interface LoadCompleted {
loaded: EventEmitter<void>;
}
我需要这两个功能:
const objectIsInstanceOfLoadCompleted = (object: any): object is LoadCompleted => {
return 'loaded' in object;
};
// this is what I tried so far
const typeImplementsLoadCompleted = (classType: any): object is LoadCompleted => {
return classType.prototype.hasOwnProperty('loaded');
};
function createInstance<T>(classType: { new(): T ;} ): T {
if (typeImplementsLoadCompleted(classType)){
console.log('the class implements LoadCompleted');
}
const classTypeObject = new classType();
if (objectIsInstanceOfComponentLoaded(classTypeObject)){
console.log('instance of LoadCompleted');
}
}