【发布时间】:2018-12-27 03:19:05
【问题描述】:
在我的 Angular 6 文件中,我定义了一个接口,然后在一个采用通用参数 T 的方法中,我想确定 T 是否在运行时实现该接口。这可能吗?
我尝试过if (T instanceof INetworkObject),但编译器不喜欢这样。
export interface INetworkObject {
fixNetworkObject(): void;
}
protected getTypedItem<T>(endpoint: string, C: { new(): T }): Observable<T> {
return this.http.get<T>(`${this.baseUrl}/${endpoint}`)
.pipe(map(element => {
if (!element) {
return null;
}
const ret = Object.assign(new C(), element);
if (T.type instanceof NetworkObject) {
}
// This ugliness is what I'm doing now
if (typeof ret['fixNetworkObject'] === 'function') {
ret['fixNetworkObject']();
}
基本上我要做的是在ret 上调用fixNetworkObject,如果它实现了该接口。
【问题讨论】:
-
@IngoBürk 我对其中的大多数都很熟悉,但它是通用的这一事实是导致我出现问题的原因。 T 不会总是实现 NetworkObject。
标签: typescript typescript-generics