在 Typescript 中使用数组进行类型检查
Type checking with an array in Typescript
我正在尝试调用 api = https://pokeapi.co/api/v2/type
我希望使用异步管道在数据中显示数组。
我正在通过 html:
<option *ngFor="let pokemonType of pokemonTypes$ | async" [value]="pokemonType.url">{{pokemonType.name | titlecase}}</option>
我有一个过滤器接口:
export interface Filter {
name: string;
url: string;
}
我的 httpService 文件中有以下方法:
getTypes(): Observable<Filter[]> {
return this.http.get<Filter[]>("https://pokeapi.co/api/v2/type", { responseType: 'json', observe: 'response' }).pipe(map((res: any) => res.body.results));
}
但是当我尝试在我的组件中设置 pokemonTypes$
时:
pokemonTypes$: Filter[] = [];
this.pokemonTypes$ = this.httpService.getTypes();
我收到以下错误:
Type 'Observable<Filter[]>' is missing the following properties from type 'Filter[]': length, pop, push, concat, and 27 more
关于原因有什么想法吗?
pokemonTypes$ 应该是可观察的,但您将其初始化为空列表。
如果你想用空列表初始化它,你应该将它初始化为一个包含空列表的可观察对象,如下所示:
pokemonTypes$ = of([]) as Observable<Filter[]>;
我正在尝试调用 api = https://pokeapi.co/api/v2/type
我希望使用异步管道在数据中显示数组。
我正在通过 html:
<option *ngFor="let pokemonType of pokemonTypes$ | async" [value]="pokemonType.url">{{pokemonType.name | titlecase}}</option>
我有一个过滤器接口:
export interface Filter {
name: string;
url: string;
}
我的 httpService 文件中有以下方法:
getTypes(): Observable<Filter[]> {
return this.http.get<Filter[]>("https://pokeapi.co/api/v2/type", { responseType: 'json', observe: 'response' }).pipe(map((res: any) => res.body.results));
}
但是当我尝试在我的组件中设置 pokemonTypes$
时:
pokemonTypes$: Filter[] = [];
this.pokemonTypes$ = this.httpService.getTypes();
我收到以下错误:
Type 'Observable<Filter[]>' is missing the following properties from type 'Filter[]': length, pop, push, concat, and 27 more
关于原因有什么想法吗?
pokemonTypes$ 应该是可观察的,但您将其初始化为空列表。
如果你想用空列表初始化它,你应该将它初始化为一个包含空列表的可观察对象,如下所示:
pokemonTypes$ = of([]) as Observable<Filter[]>;