RxJS машинопись понимая универсальные типы - PullRequest
0 голосов
/ 31 октября 2018

Из документов RxJS мы можем узнать, что мы можем создавать собственные операторы со следующим кодом:

const takeEveryNthSimple = (n: number) => <T>(source: Observable<T>) =>
  source.pipe(filter((value, index) => index % n === 0 ))

Я хочу понять, что тип дженериков в этом случае <T>(source: Observable<T>).

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 31 октября 2018

Посмотрите на универсальные типы как способ, чтобы одна и та же функция могла возвращать любой переданный тип.

Например, функция, которая выполняет запрос 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, определенный в универсальном типе.

Надеюсь, это понятно и отвечает на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...