RxJS打字稿理解泛型类型

时间:2018-10-31 17:08:34

标签: typescript rxjs

从RxJS文档中,我们可以了解到我们可以使用以下代码创建自定义运算符:

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

在这种情况下,<T>(source: Observable<T>)我想了解泛型的类型。

请帮助。

1 个答案:

答案 0 :(得分:2)

将泛型视为具有相同功能的一种方法,该函数可以返回传递的任何类型。

例如,执行get请求的函数。

function doGet<T>(endpoint: string): Observable<T> {
  return Observable.of(fetch(endpoint));
}

此函数将返回T类型的可观察对象;

现在,假设您有一个REST API,可以获取PostsUsersTags。您可以将此函数与类型定义一起使用

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,是在通用类型中定义的。

希望这很清楚,可以回答您的问题。