[jquery] Improve compatibility between Promise types.

Add `pipe(null, null, progressFilter)` overload.
This commit is contained in:
Leonard Thieu
2017-08-09 11:32:01 -04:00
parent a6644cb39b
commit f13a191e66
2 changed files with 789 additions and 438 deletions
+713 -404
View File
File diff suppressed because it is too large Load Diff
+76 -34
View File
@@ -6179,7 +6179,7 @@ function JQuery() {
}
}
function AjaxSettings() {
function JQuery_AjaxSettings() {
$.ajax({
accepts: {
mycustomtype: 'application/x-some-custom-type'
@@ -6345,7 +6345,7 @@ function AjaxSettings() {
});
}
function Callbacks() {
function JQuery_Callbacks() {
function add() {
const callbacks = $.Callbacks();
@@ -6425,7 +6425,7 @@ function Callbacks() {
}
}
function EffectsOptions() {
function JQuery_EffectsOptions() {
$('p').show({
always(animation, jumpToEnd) {
// $ExpectType HTMLElement
@@ -6489,7 +6489,7 @@ function EffectsOptions() {
});
}
function _Event() {
function JQuery_Event() {
function call_signature() {
// $ExpectType Event<HTMLElement, null> & Coordinates
$.Event('keydown', $('p').offset());
@@ -6511,7 +6511,7 @@ function _Event() {
}
}
function jqXHR() {
function JQuery_jqXHR() {
const p: JQuery.jqXHR = {} as any;
function always() {
@@ -6755,23 +6755,31 @@ function jqXHR() {
}
function _catch() {
// $ExpectType Promise3<void, never, never, never, never, never, never, never, never>
$.ajax('/echo').catch((jqXHR, textStatus, errorThrown) => {
// $ExpectType jqXHR<any>
jqXHR;
// $ExpectType ErrorTextStatus
textStatus;
// $ExpectType string
errorThrown;
});
{
const a = $.ajax('/echo').catch((jqXHR, textStatus, errorThrown) => {
// $ExpectType jqXHR<any>
jqXHR;
// $ExpectType ErrorTextStatus
textStatus;
// $ExpectType string
errorThrown;
});
// $ExpectType PromiseBase<void, never, never, never, never, never, never, never, never, never, never, never>
a;
const b: JQuery.Promise3<void, never, never, never, never, never, never, never, never> = a;
}
}
function compatibleWithPromise(): Promise<any> {
return p;
}
function compatibleWithJQueryPromise(): JQuery.Promise<any> {
return p;
}
}
function Promise3() {
function JQuery_Promise3() {
interface I1 { kind: 'I1'; }
interface I2 { kind: 'I2'; }
interface I3 { kind: 'I3'; }
@@ -7137,28 +7145,38 @@ function Promise3() {
}
function _catch() {
// $ExpectType Promise3<number, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch(() => {
return 1;
});
{
const a = $.ajax('/echo/json').catch(() => {
return 1;
});
// $ExpectType PromiseBase<number, never, never, never, never, never, never, never, never, never, never, never>
a;
const b: JQuery.Promise3<number, never, never, never, never, never, never, never, never> = a;
}
{
const a = $.ajax('/echo/json').catch(() => {
return t1;
});
// $ExpectType PromiseBase<I1, never, never, never, never, never, never, never, never, never, never, never>
a;
const b: JQuery.Promise3<I1, never, never, never, never, never, never, never, never> = a;
}
{
const a = $.ajax('/echo/json').catch(() => {
return $.ajax('/echo/json');
});
// $ExpectType PromiseBase<any, jqXHR<any>, never, SuccessTextStatus, ErrorTextStatus, never, jqXHR<any>, string, never, never, never, never>
a;
const b: JQuery.Promise3<any, JQuery.jqXHR<any>, never, JQuery.Ajax.SuccessTextStatus, JQuery.Ajax.ErrorTextStatus, never, JQuery.jqXHR<any>, string, never> = a;
}
// $ExpectType Promise3<I1, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch(() => {
return t1;
});
// $ExpectType Promise3<any, jqXHR<any>, never, SuccessTextStatus, ErrorTextStatus, never, jqXHR<any>, string, never>
$.ajax('/echo/json').catch(() => {
return $.ajax('/echo/json');
});
// $ExpectType Promise3<never, never, never, never, never, never, never, never, never>
// $ExpectType PromiseBase<never, never, never, 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>
// $ExpectType PromiseBase<never, never, never, 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>
// $ExpectType PromiseBase<never, never, never, never, never, never, never, never, never, never, never, never>
$.ajax('/echo/json').catch();
}
@@ -7176,9 +7194,13 @@ function Promise3() {
function compatibleWithPromise(): Promise<any> {
return p;
}
function compatibleWithJQueryPromise(): JQuery.Promise<any> {
return p;
}
}
function Promise2(p: JQuery.Promise2<string, Error, number, JQuery, string, boolean>) {
function JQuery_Promise2(p: JQuery.Promise2<string, Error, number, JQuery, string, boolean>) {
function then() {
p.then((a, b) => {
a; // $ExpectType string
@@ -7315,9 +7337,13 @@ function Promise2(p: JQuery.Promise2<string, Error, number, JQuery, string, bool
function compatibleWithPromise(): Promise<any> {
return p;
}
function compatibleWithJQueryPromise(): JQuery.Promise<any> {
return p;
}
}
function _Promise(p: JQuery.Promise<string, Error, number>) {
function JQuery_Promise(p: JQuery.Promise<string, Error, number>) {
function then() {
p.then((a) => {
a; // $ExpectType string
@@ -7432,3 +7458,19 @@ function _Promise(p: JQuery.Promise<string, Error, number>) {
return p;
}
}
function JQuery_Deferred() {
interface I1 { kind: 'I1'; }
interface I2 { kind: 'I2'; }
interface I3 { kind: 'I3'; }
const d1 = $.Deferred<I1, I2, I3>();
function promise() {
const target: I1 = {} as any;
d1.promise(target); // $ExpectType Promise<I1, I2, I3> & I1
d1.promise(); // $ExpectType Promise<I1, I2, I3>
}
}