jQuery 3.2.1和TypeScript承诺
我正在使用带有jQuery 3.2.1和最新类型定义的TypeScript 2.4 在一个服务类中,我有以下方法:jQuery 3.2.1和TypeScript承诺,jquery,typescript,ecmascript-6,promise,Jquery,Typescript,Ecmascript 6,Promise,我正在使用带有jQuery 3.2.1和最新类型定义的TypeScript 2.4 在一个服务类中,我有以下方法: DoSearch(searchItem: string): Promise < IWikipediaRestRecord[] > { return $.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&format=json&callback=?&search="
DoSearch(searchItem: string): Promise < IWikipediaRestRecord[] > {
return $.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&format=json&callback=?&search=" + searchItem)
.then(function(data) {
var result: IWikipediaRestRecord[] = [];
for (var i = 0; i < data[1].length; i++) {
result.push({
title: data[1][i],
content: data[2][i],
link: data[3][i]
});
}
return result;
});
DoSearch(searchItem:string):Promise{
返回$.getJSON(“https://en.wikipedia.org/w/api.php?action=opensearch&format=json&callback=?&search=“+搜索项)
.then(功能(数据){
var结果:IWikipediaRestRecord[]=[];
对于(var i=0;i
在编译项目时,出现以下错误:
error TS2322: Type '**Promise3**<IWikipediaRestRecord[], any, never, never, never, never, never, never, never>' is not assignable to type '**Promise**<IWikipediaRestRecord[]>'.
Types of property 'then' are incompatible.
Type '{ <ARD = never, AJD = never, AND = never, BRD = never, BJD = never, BND = never, CRD = never, CJD...' is not assignable to type '<TResult1 = IWikipediaRestRecord[], TResult2 = never>(onfulfilled?: ((value: IWikipediaRestRecord...'.
错误TS2322:类型“**Promise3**”不可分配给类型“**Promise**”。
“then”属性的类型不兼容。
键入“{可能是选择您真正想要使用的promise实现的最佳选择。本机实现可能是更好的选择,因此您可以这样做
var jqPromise = $.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&format=json&callback=?&search=" + searchItem)
.then(function(data) {
var result: IWikipediaRestRecord[] = [];
for (var i = 0; i < data[1].length; i++) {
result.push({
title: data[1][i],
content: data[2][i],
link: data[3][i]
});
}
return result;
});
return Promise.resolve(jqPromise);
var jqPromise=$.getJSON(“https://en.wikipedia.org/w/api.php?action=opensearch&format=json&callback=?&search=“+搜索项)
.then(功能(数据){
var结果:IWikipediaRestRecord[]=[];
对于(var i=0;i
其中,最后一行将jQuery承诺对象转换为标准ES6承诺