如何知道类类型是否实现了接口?

时间:2020-07-23 11:32:03

标签: javascript angular typescript

我有一个获取类类型的函数,在创建实例之前,我需要知道此类是否实现了接口。

我知道如何检查对象实例是否实现了用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');
    }
}

0 个答案:

没有答案