[jquery] Make JQuery.Promise and JQuery.Promise3 compatible with Promise.

This commit is contained in:
Leonard Thieu
2017-08-04 11:39:16 -04:00
parent c9bd9cf538
commit a6644cb39b
2 changed files with 33 additions and 4 deletions

View File

@@ -37,6 +37,8 @@ declare const $: JQueryStatic;
// Used by JQuery.Event
type _Event = Event;
// Used by JQuery.Promise3 and JQuery.Promise
type _Promise<T> = Promise<T>;
interface JQueryStatic<TElement extends Node = HTMLElement> {
/**
@@ -6281,7 +6283,7 @@ declare namespace JQuery {
*/
interface Promise3<TR, TJ, TN,
UR, UJ, UN,
VR, VJ, VN> extends PromiseLike<TR> {
VR, VJ, VN> extends _Promise<TR>, PromiseLike<TR> {
/**
* Add handlers to be called when the Deferred object is either resolved or rejected.
*
@@ -6685,9 +6687,9 @@ declare namespace JQuery {
catch<ARF = never, AJF = never, ANF = never,
BRF = never, BJF = never, BNF = never,
CRF = never, CJF = never, CNF = never>
(failFilter: (t: TJ, u: UJ, v: VJ) => Promise3<ARF, AJF, ANF,
(failFilter?: ((t: TJ, u: UJ, v: VJ) => Promise3<ARF, AJF, ANF,
BRF, BJF, BNF,
CRF, CJF, CNF> | Thenable<ARF> | ARF): Promise3<ARF, AJF, ANF,
CRF, CJF, CNF> | Thenable<ARF> | ARF) | undefined | null): Promise3<ARF, AJF, ANF,
BRF, BJF, BNF,
CRF, CJF, CNF>;
}
@@ -6709,7 +6711,7 @@ declare namespace JQuery {
*
* @see {@link http://api.jquery.com/Types/#Promise}
*/
interface Promise<TR, TJ = any, TN = any> extends PromiseLike<TR> {
interface Promise<TR, TJ = any, TN = any> extends _Promise<TR>, PromiseLike<TR> {
/**
* Add handlers to be called when the Deferred object is either resolved or rejected.
*

View File

@@ -6512,6 +6512,8 @@ function _Event() {
}
function jqXHR() {
const p: JQuery.jqXHR = {} as any;
function always() {
// $ExpectType jqXHR<any>
$.ajax('/echo/json').always((data_jqXHR, textStatus, jqXHR_errorThrown) => {
@@ -6763,6 +6765,10 @@ function jqXHR() {
errorThrown;
});
}
function compatibleWithPromise(): Promise<any> {
return p;
}
}
function Promise3() {
@@ -7145,6 +7151,15 @@ function Promise3() {
$.ajax('/echo/json').catch(() => {
return $.ajax('/echo/json');
});
// $ExpectType Promise3<never, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch(undefined);
// $ExpectType Promise3<never, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch(null);
// $ExpectType Promise3<never, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch();
}
// As argument to PromiseLike parameter
@@ -7157,6 +7172,10 @@ function Promise3() {
async function testAsync(p: JQuery.Promise3<string, {}, {}, {}, {}, {}, {}, {}, {}>): Promise<string> {
return await p;
}
function compatibleWithPromise(): Promise<any> {
return p;
}
}
function Promise2(p: JQuery.Promise2<string, Error, number, JQuery, string, boolean>) {
@@ -7292,6 +7311,10 @@ function Promise2(p: JQuery.Promise2<string, Error, number, JQuery, string, bool
async function testAsync(p: JQuery.Promise2<string, {}, {}, {}, {}, {}>): Promise<string> {
return await p;
}
function compatibleWithPromise(): Promise<any> {
return p;
}
}
function _Promise(p: JQuery.Promise<string, Error, number>) {
@@ -7404,4 +7427,8 @@ function _Promise(p: JQuery.Promise<string, Error, number>) {
async function testAsync(p: JQuery.Promise<string, Error, number>): Promise<string> {
return await p;
}
function compatibleWithPromise(): Promise<any> {
return p;
}
}