Посмотрите на универсальные типы как способ, чтобы одна и та же функция могла возвращать любой переданный тип.
Например, функция, которая выполняет запрос get
.
function doGet<T>(endpoint: string): Observable<T> {
return Observable.of(fetch(endpoint));
}
Эта функция будет возвращать наблюдаемое типа T
;
Теперь, допустим, у вас есть REST API, который вы можете получить Posts
, Users
, Tags
. Вы можете использовать эту функцию с определением типа как таковое
interface Posts {
//...
}
interface Users {
//...
}
interface Tags {
//...
}
doGet<Posts>('/api/posts') => Observable<Posts>;
doGet<Users>('/api/users') => Observable<Users>;
doGet<Tags>('/api/tags') => Observable<Tags>;
В приведенном вами примере Observable
, который передается во вложенную функцию, будет иметь тип T
, определенный в универсальном типе.
Надеюсь, это понятно и отвечает на ваш вопрос.