getData(): Observable<A | B> {
return this.http.get<A | B>(this.requestURL, {});
}
如果我删除<A | B>
方法旁边的get
语法,tslint
会发出错误说:You can't bind Object to A or B
所以,我最后添加语法而不了解发生了什么用语法。我在Typescript中查找Generics
,语法似乎用于捕获用户提供的类型。令我困惑的是,根据我目前正在使用的Angular 5中的get
模块中的http
方法的源代码,get
方法声明不使用{{1} }(get
method source code)。此外,如果由于类型而发生错误,generics
会不正确?
总结一下,如果return <Observable<A | B>>this.http.get(this.requestURL, {})
方法不使用类型信息Generics
,则在调用类似get<T>()
的函数时使用get
语法的意义/目的是什么?在其声明部分?
任何见解都将受到赞赏!
答案 0 :(得分:1)
您找到了已弃用的Http
模块(@angular/http
)的来源。您正在使用新模块@angular/common/http
),该模块具有通用get
method。
在没有定义any的方法上使用泛型参数是编译错误,它没有任何意义。
对于get
方法,type参数用于键入响应。不指定类型参数本身就是一个错误,无法通过强制转换解决(强制转换<Observable<A | B>>this.http.get(this.requestURL, {})
无效,因为编译错误已由get
的调用触发,而 //This function will try to load an image and fire callbacks on the availablity.
//Images are automatically cached at this point (bonus)
function testImage(url) {
var tester=new Image();
tester.onload=imageFound;
tester.onerror=imageNotFound;
tester.src=url;
}
function imageFound() {
loadNext(); //Try the next one
}
function imageNotFound() {
//Last image loading failed. Proceed showing images you have got.
console.log('Last Index: ' + lastIndex - 1;);
//showImages();
}
function loadNext(){
testImage('http://localhost/mebresim/' + data.attributes.kampus_id + '_' + lastIndex);
lastIndex++;
}
//Trigger image loading
var lastIndex = 0;
loadNext();
缺少类型参数)