T
- это просто тип, типы стираются во время выполнения, поэтому типы не могут появляться в выражениях.
Вам нужно вместо этого передать в конструктор T
.
public getProducts<T>(ctor: new (p: Partial<T>) => T): Observable<T[]> {
return this.httpClient
.get<T[]>(this.baseUrl + '/users')
.pipe(
map((entities) => {
return entities.map((entity) => {
return new ctor(entity);
})
}),
catchError((err) => Observable.throw(err))
);
}
Это означает, что у вас есть класс, определенный для T
.Если класса нет, не беспокойтесь о new T
.Если T
является интерфейсом, то объекты, возвращаемые сервером, предположительно будут удовлетворять интерфейсу, и больше ничего делать не нужно /