【发布时间】:2019-03-08 14:50:15
【问题描述】:
我在打字稿代码中收到以下错误,但不确定为什么有任何想法 - 它是 this.items 变量?
类型“对象”不能分配给类型“任何[]”。 “对象”类型 可分配给极少数其他类型。你的意思是使用“任何” 改为输入?
export class GifpickerComponent implements OnInit {
public searchTerm : FormControl = new FormControl();
public items = [];
constructor(private gifpickerService: GifpickerService){
this.searchTerm.valueChanges
.subscribe(data => {
this.gifpickerService.search(data).subscribe(response =>{
console.log('subscribe', response);
this.items = response; /* line picked up in error */
})
})
}
/* 请求的服务 */
import { Injectable } from '@angular/core';
import { ApiService } from "../../services/api.service";
import { HttpClient, HttpParams, HttpResponse} from '@angular/common/http';
@Injectable()
export class GifpickerService {
constructor(
private http: HttpClient,
private apiService: ApiService
) {}
search(term){
console.log('term', term);
let url = this.apiService.getApiUrl('gif/search');
let params = new HttpParams()
.set('q', String(term))
.set('results_only', '1');
return this.http.get(url, {params: params})
.map(response => {
return response;
});
}
}
【问题讨论】:
-
你能展示你的
search方法的实现吗?以便我们展示最佳实践? -
response的类型是什么? -
@Zabs 你应该输入
response。例如,如果响应是一个 SearchResult 数组:return this.http.get<SearchResult[]>(url, {params: params})。顺便说一句,get之后的map在您的示例中没有用。然后在组件中为项目添加类型:public items: SearchResult[] = [];
标签: javascript angular typescript