Typescript中函数的通用返回类型

Par*_*ngh 7 generics function typescript

我是ts的新手,但是我已经了解了java中泛型的概念。查询的是我具有三个功能:searchTrack,searchAlbum,searchArtist

  searchTrack(query: string): Observable<Track[]> {
    return this.search(query, 'track');
  }

  searchArtist(query: string): Observable<Artist[]> {
    return this.search(query, 'artist');
  }

  searchAlbum(query: string): Observable<Album[]> {
    return this.search(query, 'album');
  }
Run Code Online (Sandbox Code Playgroud)

我想要此类中的通用功能“搜索”,该功能接受查询和实体类型并返回特定实体类型的Observable集合。我被困在这里。我如何使用泛型来指定函数的泛型返回类型。

search(query: string, type: string): Observable<Array<T>> {
 return this.query(`/search`, [
   `q=${query}`,
   `type=${type}`
 ]);
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以实现?

tos*_*skv 5

尝试使用Array类而不是[]。还要在搜索功能上定义通用T类型。

search<T>(query: string, type: string): Observable<Array<T>> {
 return this.query(`/search`, [
   `q=${query}`,
   `type=${type}`
 ]);
}
Run Code Online (Sandbox Code Playgroud)

您应该可以这样称呼它:

let result = search<Artist>('someQuery', 'artist');
Run Code Online (Sandbox Code Playgroud)

您可以在此处的《泛型》一章中的打字稿中找到有关泛型的更多信息。