Я предполагаю, что вы ищете что-то вроде этого:
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>>
. Если вам действительно нужно, чтобы параметр типа generi c имел тип 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>>
. Однако типизация для этой версии не так чиста, и для ее реализации требуется утверждение типа .
Надеюсь, это поможет; удачи!
Детская площадка ссылка на код