在 Angular 7 中实现基于 Angular 7 中另一个泛型类的泛型类



我在 TypeScript 中有以下接口和类:

export interface PageInterface<T> {
count: number;
previous: string;
next: string;
results: T[];
}
export class Page<T> implements PageInterface<T> {}
----------------------------------------------------------
export interface AdapterInterface<T> {
adapt(item: any): T;
}

我需要实施PageAdapter<Page<T>>.

可能吗?我尝试了以下方法,但最终出现错误(键入"页面"si 不是通用的(:

export class PageAdapter<Page> implements AdapterInterface<Page> {
adapt(item: any): Page<T> {
return new Page<T>(item['count'], item['previous'], item['next'], item['results']);
}
}

如果我在第一行放Page<T>而不是Page,它根本不起作用。

我该如何实现这一点?

非常感谢,

我假设你正在寻找这样的东西:

export class PageAdapter<T> implements AdapterInterface<Page<T>> {
adapt(item: any): Page<T> {
return new Page<T>(item['count'], item['previous'], item['next'], item['results']);
}
}

因此,例如,PageAdapter<string>可以用作AdapterInterface<Page<string>>。 如果你真的需要泛型类型参数是一个类似Page的类型,你可以写这样的东西:

export class PageAdapter2<P extends Page<any>> implements AdapterInterface<P> {
adapt(item: any): P {
return new Page(item['count'], item['previous'], item['next'], item['results']) as P;
}
}

在这里,PageAdapter<Page<string>>可以用作AdapterInterface<Page<string>>。 但是,此版本的类型并不那么干净,需要类型断言才能实现。

希望有帮助;祝你好运!

操场链接到代码

最新更新