From 5af51abb911aa56119df050fcc82594a17726dd6 Mon Sep 17 00:00:00 2001 From: Leonard Thieu Date: Tue, 19 Jun 2018 10:27:17 -0400 Subject: [PATCH 1/3] [jquery] Remove type parameter from `JQueryStatic`. The type parameter does not provide additional type safety. It also forced unnecessary type assertions in some usage scenarios. --- types/jquery/index.d.ts | 57 +++++++++---------- types/jquery/jquery-tests.ts | 28 ++++----- .../test/jquery-no-window-module-tests.ts | 2 +- .../jquery-slim-no-window-module-tests.ts | 2 +- .../jquery/test/jquery-window-module-tests.ts | 13 ----- 5 files changed, 41 insertions(+), 61 deletions(-) diff --git a/types/jquery/index.d.ts b/types/jquery/index.d.ts index 68f6079b87..471418be02 100644 --- a/types/jquery/index.d.ts +++ b/types/jquery/index.d.ts @@ -38,7 +38,7 @@ declare const $: JQueryStatic; // Used by JQuery.Event type _Event = Event; -interface JQueryStatic { +interface JQueryStatic { /** * @see \`{@link http://api.jquery.com/jquery.ajax/#jQuery-ajax1 }\` * @deprecated Use jQuery.ajaxSetup(options) @@ -54,7 +54,7 @@ interface JQueryStatic { * @since 1.5 */ Deferred: JQuery.DeferredStatic; - Event: JQuery.EventStatic; + Event: JQuery.EventStatic; /** * Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize * CSS property naming, or create custom properties. @@ -62,7 +62,8 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.cssHooks/ }\` * @since 1.4.3 */ - cssHooks: JQuery.PlainObject>; + // Set to HTMLElement to minimize breaks but should probably be Element. + cssHooks: JQuery.PlainObject>; /** * An object containing all CSS properties that may be used without a unit. The .css() method uses this * object to see if it may append px to unitless values. @@ -71,7 +72,8 @@ interface JQueryStatic { * @since 1.4.3 */ cssNumber: JQuery.PlainObject; - readonly fn: JQuery; + // Set to HTMLElement to minimize breaks but should probably be Element. + readonly fn: JQuery; fx: { /** * The rate (in milliseconds) at which animations fire. @@ -96,7 +98,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.ready/ }\` * @since 1.8 */ - ready: JQuery.Thenable>; + ready: JQuery.Thenable; /** * A collection of properties that represent the presence of different browser features or bugs. * Intended for jQuery's internal use; specific properties may be removed when they are no longer @@ -109,7 +111,11 @@ interface JQueryStatic { * @deprecated 1.9 */ support: JQuery.PlainObject; - valHooks: JQuery.PlainObject>; + // Set to HTMLElement to minimize breaks but should probably be Element. + valHooks: JQuery.PlainObject>; + // HACK: This is the factory function returned when importing jQuery without a DOM. Declaring it separately breaks using the type parameter on JQueryStatic. + // HACK: The discriminator parameter handles the edge case of passing a Window object to JQueryStatic. It doesn't actually exist on the factory function. + (window: Window, discriminator: boolean): JQueryStatic; /** * Creates DOM elements on the fly from the provided string of raw HTML. * @@ -121,7 +127,7 @@ interface JQueryStatic { * @since 1.0 * @since 1.4 */ - (html: JQuery.htmlString, ownerDocument_attributes: Document | JQuery.PlainObject): JQuery; + (html: JQuery.htmlString, ownerDocument_attributes?: Document | JQuery.PlainObject): JQuery; /** * Accepts a string containing a CSS selector which is then used to match a set of elements. * @@ -130,10 +136,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ - (selector: JQuery.Selector, context: Element | Document | JQuery | undefined): JQuery; - // HACK: This is the factory function returned when importing jQuery without a DOM. Declaring it separately breaks using the type parameter on JQueryStatic. - // HACK: The discriminator parameter handles the edge case of passing a Window object to JQueryStatic. It doesn't actually exist on the factory function. - (window: Window, discriminator: boolean): JQueryStatic; + (selector: JQuery.Selector, context?: Element | Document | JQuery): JQuery; /** * Return a collection of matched elements either found in the DOM based on passed argument(s) or created * by passing an HTML string. @@ -154,19 +157,13 @@ interface JQueryStatic { */ (selection: JQuery): JQuery; /** - * Accepts a string containing a CSS selector which is then used to match a set of elements. - * - * Creates DOM elements on the fly from the provided string of raw HTML. - * * Binds a function to be executed when the DOM has finished loading. * - * @param selector_object_callback A string containing a selector expression - * A string of HTML to create on the fly. Note that this parses HTML, not XML. - * The function to execute when the DOM is ready. + * @param callback The function to execute when the DOM is ready. * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ - (selector_object_callback: JQuery.Selector | JQuery.htmlString | ((this: Document, $: JQueryStatic) => void)): JQuery; // tslint:disable-line:unified-signatures + (callback: ((this: Document, $: JQueryStatic) => void)): JQuery; // tslint:disable-line:unified-signatures /** * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. * @@ -181,7 +178,7 @@ interface JQueryStatic { * @see {@link https://api.jquery.com/jQuery/} * @since 1.4 */ - (): JQuery; + (): JQuery; /** * A multi-purpose callbacks list object that provides a powerful way to manage callback lists. * @@ -3000,7 +2997,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.speed/ }\` * @since 1.1 */ - speed(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): JQuery.EffectsOptions; + speed(duration: JQuery.Duration, easing: string, complete: (this: TElement) => void): JQuery.EffectsOptions; /** * Creates an object containing a set of properties ready to be used in the definition of custom animations. * @@ -3011,8 +3008,8 @@ interface JQueryStatic { * @since 1.0 * @since 1.1 */ - speed(duration: JQuery.Duration, - easing_complete: string | ((this: TElement) => void)): JQuery.EffectsOptions; + speed(duration: JQuery.Duration, + easing_complete: string | ((this: TElement) => void)): JQuery.EffectsOptions; /** * Creates an object containing a set of properties ready to be used in the definition of custom animations. * @@ -3022,7 +3019,7 @@ interface JQueryStatic { * @since 1.0 * @since 1.1 */ - speed(duration_complete_settings?: JQuery.Duration | ((this: TElement) => void) | JQuery.SpeedSettings): JQuery.EffectsOptions; + speed(duration_complete_settings?: JQuery.Duration | ((this: TElement) => void) | JQuery.SpeedSettings): JQuery.EffectsOptions; /** * Remove the whitespace from the beginning and end of a string. * @@ -5023,7 +5020,7 @@ interface JQuery extends Iterable { * @since 1.0 * @deprecated 3.0 */ - ready(handler: ($: JQueryStatic) => void): this; + ready(handler: ($: JQueryStatic) => void): this; /** * Remove the set of matched elements from the DOM. * @@ -7815,11 +7812,11 @@ declare namespace JQuery { // This should be a class but doesn't work correctly under the JQuery namespace. Event should be an inner class of jQuery. // Static members - interface EventStatic { - (event: string, properties?: T): JQuery.Event & T; - (properties: T): JQuery.Event & T; - new (event: string, properties?: T): JQuery.Event & T; - new (properties: T): JQuery.Event & T; + interface EventStatic { + (event: string, properties?: T): JQuery.Event & T; + (properties: T): JQuery.Event & T; + new (event: string, properties?: T): JQuery.Event & T; + new (properties: T): JQuery.Event & T; } // Instance members diff --git a/types/jquery/jquery-tests.ts b/types/jquery/jquery-tests.ts index f0d1ce5ef8..967da36442 100644 --- a/types/jquery/jquery-tests.ts +++ b/types/jquery/jquery-tests.ts @@ -1,8 +1,4 @@ function JQueryStatic() { - function type_assertion() { - const $Canvas = $ as JQueryStatic; - } - function type_annotation() { const jq: JQueryStatic = $; } @@ -52,7 +48,7 @@ function JQueryStatic() { $(function($) { // $ExpectType Document this; - // $ExpectType JQueryStatic + // $ExpectType JQueryStatic $; }); @@ -101,7 +97,7 @@ function JQueryStatic() { } function Event() { - // $ExpectType EventStatic + // $ExpectType EventStatic $.Event; } @@ -138,7 +134,7 @@ function JQueryStatic() { } function ready() { - // $ExpectType Thenable> + // $ExpectType Thenable $.ready; } @@ -869,10 +865,10 @@ function JQueryStatic() { } function noConflict() { - // $ExpectType JQueryStatic + // $ExpectType JQueryStatic $.noConflict(true); - // $ExpectType JQueryStatic + // $ExpectType JQueryStatic $.noConflict(); } @@ -5344,7 +5340,7 @@ function JQuery() { function ready() { // $ExpectType JQuery $('p').ready(($) => { - // $ExpectType JQueryStatic + // $ExpectType JQueryStatic $; }); } @@ -7188,7 +7184,7 @@ function JQuery_Promise3() { p.then(() => { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(() => { @@ -7218,7 +7214,7 @@ function JQuery_Promise3() { p.then(null, () => { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(null, () => { @@ -7574,7 +7570,7 @@ function JQuery_Promise2(p: JQuery.Promise2 { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(() => { @@ -7601,7 +7597,7 @@ function JQuery_Promise2(p: JQuery.Promise2 { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(null, () => { @@ -7701,7 +7697,7 @@ function JQuery_Promise(p: JQuery.Promise) { p.then(() => { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(() => { @@ -7725,7 +7721,7 @@ function JQuery_Promise(p: JQuery.Promise) { p.then(null, () => { return $.ready; }).then((a) => { - a; // $ExpectType JQueryStatic + a; // $ExpectType JQueryStatic }); p.then(null, () => { diff --git a/types/jquery/test/jquery-no-window-module-tests.ts b/types/jquery/test/jquery-no-window-module-tests.ts index 2f2de4cc98..783031a672 100644 --- a/types/jquery/test/jquery-no-window-module-tests.ts +++ b/types/jquery/test/jquery-no-window-module-tests.ts @@ -1,5 +1,5 @@ import jQueryFactory = require('jquery'); const jq = jQueryFactory(window, true); -// $ExpectType JQueryStatic +// $ExpectType JQueryStatic jq; diff --git a/types/jquery/test/jquery-slim-no-window-module-tests.ts b/types/jquery/test/jquery-slim-no-window-module-tests.ts index 2e104af0eb..16793e0d2c 100644 --- a/types/jquery/test/jquery-slim-no-window-module-tests.ts +++ b/types/jquery/test/jquery-slim-no-window-module-tests.ts @@ -1,5 +1,5 @@ import jQueryFactory = require('jquery/dist/jquery.slim'); const jq = jQueryFactory(window, true); -// $ExpectType JQueryStatic +// $ExpectType JQueryStatic jq; diff --git a/types/jquery/test/jquery-window-module-tests.ts b/types/jquery/test/jquery-window-module-tests.ts index 72cb44c5aa..1d554f0861 100644 --- a/types/jquery/test/jquery-window-module-tests.ts +++ b/types/jquery/test/jquery-window-module-tests.ts @@ -3,16 +3,3 @@ import jq = require('jquery'); const $window = jq(window); // $ExpectType JQuery $window; - -class CanvasLayersDirective { - private readonly $renderingCanvas: JQuery; - private readonly $offscreenCanvas: JQuery; - - constructor(elementRef: { nativeElement: any; }) { - // This type assertion results in an error when exporting 'typeof factory & JQueryStatic' where - // 'factory' is jQuery's factory function. - const $Canvas = $ as JQueryStatic; - this.$renderingCanvas = $Canvas(elementRef.nativeElement); - this.$offscreenCanvas = $Canvas(document.createElement('canvas')); - } -} From 9e427aa322b21051050c5e166ccdca42205f14b7 Mon Sep 17 00:00:00 2001 From: Leonard Thieu Date: Tue, 19 Jun 2018 12:23:17 -0400 Subject: [PATCH 2/3] [jquery] Improve lint compliance. --- types/jquery/index.d.ts | 656 ++++++++++++++++++----------------- types/jquery/jquery-tests.ts | 46 +-- types/jquery/tslint.json | 18 +- 3 files changed, 367 insertions(+), 353 deletions(-) diff --git a/types/jquery/index.d.ts b/types/jquery/index.d.ts index 471418be02..26d5a90625 100644 --- a/types/jquery/index.d.ts +++ b/types/jquery/index.d.ts @@ -73,7 +73,7 @@ interface JQueryStatic { */ cssNumber: JQuery.PlainObject; // Set to HTMLElement to minimize breaks but should probably be Element. - readonly fn: JQuery; + readonly fn: JQuery; fx: { /** * The rate (in milliseconds) at which animations fire. @@ -127,6 +127,7 @@ interface JQueryStatic { * @since 1.0 * @since 1.4 */ + // tslint:disable-next-line:no-unnecessary-generics (html: JQuery.htmlString, ownerDocument_attributes?: Document | JQuery.PlainObject): JQuery; /** * Accepts a string containing a CSS selector which is then used to match a set of elements. @@ -136,6 +137,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ + // tslint:disable-next-line:no-unnecessary-generics (selector: JQuery.Selector, context?: Element | Document | JQuery): JQuery; /** * Return a collection of matched elements either found in the DOM based on passed argument(s) or created @@ -143,7 +145,7 @@ interface JQueryStatic { * * @param element_elementArray A DOM element to wrap in a jQuery object. * An array containing a set of DOM elements to wrap in a jQuery object. - * @see {@link https://api.jquery.com/jQuery/} + * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ (element_elementArray: T | ArrayLike): JQuery; @@ -152,7 +154,7 @@ interface JQueryStatic { * by passing an HTML string. * * @param selection An existing jQuery object to clone. - * @see {@link https://api.jquery.com/jQuery/} + * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ (selection: JQuery): JQuery; @@ -163,21 +165,23 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ - (callback: ((this: Document, $: JQueryStatic) => void)): JQuery; // tslint:disable-line:unified-signatures + // tslint:disable-next-line:no-unnecessary-generics unified-signatures + (callback: ((this: Document, $: JQueryStatic) => void)): JQuery; /** * Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string. * * @param object A plain object to wrap in a jQuery object. - * @see {@link https://api.jquery.com/jQuery/} + * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.0 */ (object: T): JQuery; /** * Returns an empty jQuery set. * - * @see {@link https://api.jquery.com/jQuery/} + * @see \`{@link https://api.jquery.com/jQuery/ }\` * @since 1.4 */ + // tslint:disable-next-line:no-unnecessary-generics (): JQuery; /** * A multi-purpose callbacks list object that provides a powerful way to manage callback lists. @@ -186,6 +190,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.Callbacks/ }\` * @since 1.7 */ + // tslint:disable-next-line:ban-types no-unnecessary-generics Callbacks(flags?: string): JQuery.Callbacks; /** * Perform an asynchronous HTTP (Ajax) request. @@ -631,6 +636,7 @@ interface JQueryStatic { * @since 1.2 * @deprecated 3.3 */ + // tslint:disable-next-line:ban-types isFunction(obj: any): obj is Function; /** * Determines whether its argument represents a JavaScript number. @@ -3065,10 +3071,10 @@ interface JQueryStatic { * @since 1.5 */ when - (deferredT: JQuery.Promise | JQuery.Thenable | TR1, - deferredU: JQuery.Promise | JQuery.Thenable | UR1, - deferredV: JQuery.Promise | JQuery.Thenable | VR1): JQuery.Promise3( + deferredT: JQuery.Promise | JQuery.Thenable | TR1, // tslint:disable-line:use-default-type-parameter + deferredU: JQuery.Promise | JQuery.Thenable | UR1, // tslint:disable-line:use-default-type-parameter + deferredV: JQuery.Promise | JQuery.Thenable | VR1): JQuery.Promise3; /** @@ -3079,9 +3085,9 @@ interface JQueryStatic { * @since 1.5 */ when - (deferredT: JQuery.Promise | JQuery.Thenable | TR1, - deferredU: JQuery.Promise | JQuery.Thenable | UR1): JQuery.Promise2( + deferredT: JQuery.Promise | JQuery.Thenable | TR1, // tslint:disable-line:use-default-type-parameter + deferredU: JQuery.Promise | JQuery.Thenable | UR1): JQuery.Promise2; /** * Provides a way to execute callback functions based on zero or more Thenable objects, usually @@ -3092,9 +3098,9 @@ interface JQueryStatic { */ when - (deferredT: JQuery.Promise3 | - JQuery.Promise2): JQuery.Promise3; + TR3 = never, TJ3 = never>( + deferredT: JQuery.Promise3 | + JQuery.Promise2): JQuery.Promise3; /** * Provides a way to execute callback functions based on zero or more Thenable objects, usually * Deferred objects that represent asynchronous events. @@ -3102,7 +3108,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.when/ }\` * @since 1.5 */ - when(deferred: JQuery.Promise | JQuery.Thenable | TR1): JQuery.Promise; + when(deferred: JQuery.Promise | JQuery.Thenable | TR1): JQuery.Promise; // tslint:disable-line:use-default-type-parameter /** * Provides a way to execute callback functions based on zero or more Thenable objects, usually * Deferred objects that represent asynchronous events. @@ -3111,7 +3117,7 @@ interface JQueryStatic { * @see \`{@link https://api.jquery.com/jQuery.when/ }\` * @since 1.5 */ - when(...deferreds: Array | JQuery.Thenable | TR1>): JQuery.Promise; + when(...deferreds: Array | JQuery.Thenable | TR1>): JQuery.Promise; // tslint:disable-line:use-default-type-parameter /** * Provides a way to execute callback functions based on zero or more Thenable objects, usually * Deferred objects that represent asynchronous events. @@ -4076,6 +4082,7 @@ interface JQuery extends Iterable { * @since 1.4 */ // HACK: The type parameter T is not used but ensures the 'event' callback parameter is typed correctly. + // tslint:disable-next-line:no-unnecessary-generics hover(handlerInOut: JQuery.EventHandler | JQuery.EventHandlerBase> | false, handlerOut?: JQuery.EventHandler | JQuery.EventHandlerBase> | false): this; /** @@ -4553,10 +4560,10 @@ interface JQuery extends Iterable { * @see \`{@link https://api.jquery.com/on/ }\` * @since 1.7 */ - on(events: string, - selector: JQuery.Selector | null, - data: TData, - handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures + on(events: string, + selector: JQuery.Selector | null, + data: any, + handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures /** * Attach an event handler function for one or more events to the selected elements. * @@ -4582,8 +4589,8 @@ interface JQuery extends Iterable { * @since 1.7 */ on(events: string, - selector: JQuery.Selector, - handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures + selector: JQuery.Selector, + handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures /** * Attach an event handler function for one or more events to the selected elements. * @@ -4605,9 +4612,9 @@ interface JQuery extends Iterable { * @see \`{@link https://api.jquery.com/on/ }\` * @since 1.7 */ - on(events: string, - data: TData, - handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures + on(events: string, + data: any, // tslint:disable-line:unified-signatures + handler: ((event: JQueryEventObject) => void)): this; /** * Attach an event handler function for one or more events to the selected elements. * @@ -4628,7 +4635,7 @@ interface JQuery extends Iterable { * @since 1.7 */ on(events: string, - handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures + handler: ((event: JQueryEventObject) => void)): this; // tslint:disable-line:unified-signatures /** * Attach an event handler function for one or more events to the selected elements. * @@ -5636,6 +5643,7 @@ interface JQuery extends Iterable { } // ES5 compatibility +// tslint:disable-next-line:no-empty-interface interface Iterable { } declare namespace JQuery { @@ -5704,7 +5712,7 @@ declare namespace JQuery { type TextStatus = SuccessTextStatus | ErrorTextStatus; interface SuccessCallback { - (this: TContext, data: any, textStatus: SuccessTextStatus, jqXHR: JQuery.jqXHR): void; + (this: TContext, data: any, textStatus: SuccessTextStatus, jqXHR: jqXHR): void; } interface ErrorCallback { @@ -5755,7 +5763,7 @@ declare namespace JQuery { * "timeout", "abort", or "parsererror"). As of jQuery 1.5, the complete setting can accept an array of * functions. Each function will be called in turn. This is an Ajax Event. */ - complete?: TypeOrArray>; + complete?: TypeOrArray>; /** * An object of string/regular-expression pairs that determine how jQuery will parse the response, * given its content type. @@ -5844,7 +5852,7 @@ declare namespace JQuery { * 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: * This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event. */ - error?: TypeOrArray>; + error?: TypeOrArray>; /** * Whether to trigger global Ajax event handlers for this request. The default is true. Set to false to * prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to @@ -5930,7 +5938,7 @@ declare namespace JQuery { * XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each * function will be called in turn. This is an Ajax Event. */ - success?: TypeOrArray>; + success?: TypeOrArray>; /** * Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This * will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the @@ -6446,6 +6454,7 @@ declare namespace JQuery { // region Callbacks + // tslint:disable-next-line:ban-types interface Callbacks { /** * Add a callback or a collection of callbacks to a callback list. @@ -6565,13 +6574,13 @@ declare namespace JQuery { * @returns A Promise for the completion of which ever callback is executed. */ then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onrejected?: ((reason: any) => TResult2 | PromiseLike) | null): JQuery._Promise; + onrejected?: ((reason: any) => TResult2 | PromiseLike) | null): _Promise; /** * Attaches a callback for only the rejection of the Promise. * @param onrejected The callback to execute when the Promise is rejected. * @returns A Promise for the completion of the callback. */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | null): JQuery._Promise; + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | null): _Promise; } // Type parameter guide @@ -6599,7 +6608,7 @@ declare namespace JQuery { interface PromiseBase extends JQuery._Promise, PromiseLike { + SR, SJ, SN> extends _Promise, PromiseLike { /** * Add handlers to be called when the Deferred object is either resolved or rejected. * @@ -6688,19 +6697,19 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6722,16 +6731,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: null, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6753,16 +6762,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: null, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6780,13 +6789,13 @@ declare namespace JQuery { pipe - (doneFilter: null, - failFilter: null, - progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: null, + progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6808,16 +6817,16 @@ declare namespace JQuery { ARF = never, AJF = never, ANF = never, BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, - RRF = never, RJF = never, RNF = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, - progressFilter?: null): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, + progressFilter?: null): PromiseBase; @@ -6835,13 +6844,13 @@ declare namespace JQuery { pipe - (doneFilter: null, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, - progressFilter?: null): PromiseBase( + doneFilter: null, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | AJF, + progressFilter?: null): PromiseBase; @@ -6859,13 +6868,13 @@ declare namespace JQuery { pipe - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter?: null, - progressFilter?: null): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null): PromiseBase; @@ -6894,19 +6903,19 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6926,16 +6935,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: null, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6955,16 +6964,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: null, - progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -6980,13 +6989,13 @@ declare namespace JQuery { then - (doneFilter: null, - failFilter: null, - progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: null, + progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7006,16 +7015,16 @@ declare namespace JQuery { ARF = never, AJF = never, ANF = never, BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, - RRF = never, RJF = never, RNF = never> - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, - progressFilter?: null): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, + progressFilter?: null): PromiseBase; @@ -7031,13 +7040,13 @@ declare namespace JQuery { then - (doneFilter: null, - failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, - progressFilter?: null): PromiseBase( + doneFilter: null, + failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, + progressFilter?: null): PromiseBase; @@ -7053,13 +7062,13 @@ declare namespace JQuery { then - (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, - failFilter?: null, - progressFilter?: null): PromiseBase( + doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null): PromiseBase; @@ -7076,11 +7085,11 @@ declare namespace JQuery { catch - (failFilter?: ((t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF) | null): PromiseBase( + failFilter?: ((t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF) | null): PromiseBase; @@ -7125,7 +7134,7 @@ declare namespace JQuery { interface DeferredStatic { // https://jquery.com/upgrade-guide/3.0/#callback-exit exceptionHook: any; - (beforeStart?: (this: JQuery.Deferred, deferred: JQuery.Deferred) => void): JQuery.Deferred; + (beforeStart?: (this: Deferred, deferred: Deferred) => void): Deferred; } interface Deferred { @@ -7229,14 +7238,14 @@ declare namespace JQuery { * @see \`{@link https://api.jquery.com/deferred.promise/ }\` * @since 1.5 */ - promise(target: TTarget): JQuery.Promise & TTarget; + promise(target: TTarget): Promise & TTarget; /** * Return a Deferred's Promise object. * * @see \`{@link https://api.jquery.com/deferred.promise/ }\` * @since 1.5 */ - promise(): JQuery.Promise; + promise(): Promise; /** * Determine the current state of a Deferred object. * @@ -7269,19 +7278,19 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7303,16 +7312,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: null, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7334,16 +7343,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: null, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7361,13 +7370,13 @@ declare namespace JQuery { pipe - (doneFilter: null, - failFilter: null, - progressFilter?: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: null, + progressFilter?: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7389,16 +7398,16 @@ declare namespace JQuery { ARF = never, AJF = never, ANF = never, BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, - RRF = never, RJF = never, RNF = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, - progressFilter?: null): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, + progressFilter?: null): PromiseBase; @@ -7416,13 +7425,13 @@ declare namespace JQuery { pipe - (doneFilter: null, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, - progressFilter?: null): PromiseBase( + doneFilter: null, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | AJF, + progressFilter?: null): PromiseBase; @@ -7440,13 +7449,13 @@ declare namespace JQuery { pipe - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter?: null, - progressFilter?: null): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null): PromiseBase; @@ -7475,19 +7484,19 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7507,16 +7516,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: null, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7536,16 +7545,16 @@ declare namespace JQuery { ARP = never, AJP = never, ANP = never, BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, - RRP = never, RJP = never, RNP = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: null, - progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: null, + progressFilter: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7561,13 +7570,13 @@ declare namespace JQuery { then - (doneFilter: null, - failFilter: null, - progressFilter?: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase( + doneFilter: null, + failFilter: null, + progressFilter?: (...t: TN[]) => PromiseBase | Thenable | ANP): PromiseBase; @@ -7587,16 +7596,16 @@ declare namespace JQuery { ARF = never, AJF = never, ANF = never, BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, - RRF = never, RJF = never, RNF = never> - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, - progressFilter?: null): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, + progressFilter?: null): PromiseBase; @@ -7612,13 +7621,13 @@ declare namespace JQuery { then - (doneFilter: null, - failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, - progressFilter?: null): PromiseBase( + doneFilter: null, + failFilter: (...t: TJ[]) => PromiseBase | Thenable | ARF, + progressFilter?: null): PromiseBase; @@ -7634,13 +7643,13 @@ declare namespace JQuery { then - (doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, - failFilter?: null, - progressFilter?: null): PromiseBase( + doneFilter: (...t: TR[]) => PromiseBase | Thenable | ARD, + failFilter?: null, + progressFilter?: null): PromiseBase; @@ -7657,11 +7666,11 @@ declare namespace JQuery { catch - (failFilter?: ((...t: TJ[]) => PromiseBase | Thenable | ARF) | null): PromiseBase( + failFilter?: ((...t: TJ[]) => PromiseBase | Thenable | ARF) | null): PromiseBase; @@ -7719,7 +7728,7 @@ declare namespace JQuery { * A function to be called when the animation on an element completes or stops without completing (its * Promise object is either resolved or rejected). */ - always?(this: TElement, animation: JQuery.Promise, jumpedToEnd: boolean): void; + always?(this: TElement, animation: Promise, jumpedToEnd: boolean): void; /** * A function that is called once the animation on an element is complete. */ @@ -7727,7 +7736,7 @@ declare namespace JQuery { /** * A function to be called when the animation on an element completes (its Promise object is resolved). */ - done?(this: TElement, animation: JQuery.Promise, jumpedToEnd: boolean): void; + done?(this: TElement, animation: Promise, jumpedToEnd: boolean): void; /** * A string or number determining how long the animation will run. */ @@ -7739,12 +7748,12 @@ declare namespace JQuery { /** * A function to be called when the animation on an element fails to complete (its Promise object is rejected). */ - fail?(this: TElement, animation: JQuery.Promise, jumpedToEnd: boolean): void; + fail?(this: TElement, animation: Promise, jumpedToEnd: boolean): void; /** * A function to be called after each step of the animation, only once per animated element regardless * of the number of animated properties. */ - progress?(this: TElement, animation: JQuery.Promise, progress: number, remainingMs: number): void; + progress?(this: TElement, animation: Promise, progress: number, remainingMs: number): void; /** * A Boolean indicating whether to place the animation in the effects queue. If false, the animation * will begin immediately. As of jQuery 1.7, the queue option can also accept a string, in which case @@ -7760,7 +7769,7 @@ declare namespace JQuery { /** * A function to call when the animation on an element begins. */ - start?(this: TElement, animation: JQuery.Promise): void; + start?(this: TElement, animation: Promise): void; /** * A function to be called for each animated property of each animated element. This function provides * an opportunity to modify the Tween object to change the value of the property before it is set. @@ -7800,7 +7809,7 @@ declare namespace JQuery { } interface AnimationHook { - (fx: JQuery.Tween): void; + (fx: Tween): void; } // endregion @@ -7813,10 +7822,14 @@ declare namespace JQuery { // Static members interface EventStatic { - (event: string, properties?: T): JQuery.Event & T; - (properties: T): JQuery.Event & T; - new (event: string, properties?: T): JQuery.Event & T; - new (properties: T): JQuery.Event & T; + // tslint:disable-next-line:no-unnecessary-generics + (event: string, properties?: T): Event & T; + // tslint:disable-next-line:no-unnecessary-generics + (properties: T): Event & T; + // tslint:disable-next-line:no-unnecessary-generics + new (event: string, properties?: T): Event & T; + // tslint:disable-next-line:no-unnecessary-generics + new (properties: T): Event & T; } // Instance members @@ -7971,7 +7984,7 @@ declare namespace JQuery { // endregion - interface EventHandler extends EventHandlerBase> { } + interface EventHandler extends EventHandlerBase> { } interface EventHandlerBase { // Extra parameters can be passed from trigger() @@ -7979,6 +7992,7 @@ declare namespace JQuery { } // Provided for convenience for use with jQuery.Event.which + // tslint:disable-next-line:no-const-enum const enum Mouse { None = 0, Left = 1, @@ -7987,6 +8001,7 @@ declare namespace JQuery { } // Provided for convenience for use with jQuery.Event.which + // tslint:disable-next-line:no-const-enum const enum Key { Backspace = 8, Tab = 9, @@ -8123,21 +8138,28 @@ declare namespace JQuery { // region Legacy types -interface JQueryCallback extends JQuery.Callbacks { } +// tslint:disable-next-line:no-empty-interface +interface JQueryCallback extends JQuery.Callbacks { } interface JQueryDeferred extends JQuery.Deferred { } -interface JQueryEventConstructor extends JQuery.Event { } +// tslint:disable-next-line:no-empty-interface +interface JQueryEventConstructor extends JQuery.EventStatic { } interface JQueryDeferred extends JQuery.Deferred { } +// tslint:disable-next-line:no-empty-interface interface JQueryAjaxSettings extends JQuery.AjaxSettings { } interface JQueryAnimationOptions extends JQuery.EffectsOptions { } +// tslint:disable-next-line:no-empty-interface interface JQueryCoordinates extends JQuery.Coordinates { } interface JQueryGenericPromise extends JQuery.Thenable { } +// tslint:disable-next-line:no-empty-interface interface JQueryXHR extends JQuery.jqXHR { } interface JQueryPromise extends JQuery.Promise { } +// tslint:disable-next-line:no-empty-interface interface JQuerySerializeArrayElement extends JQuery.NameValuePair { } /** * @deprecated 1.9 */ +// tslint:disable-next-line:no-empty-interface interface JQuerySupport extends JQuery.PlainObject { } // Legacy types that are not represented in the current type definitions are marked deprecated. diff --git a/types/jquery/jquery-tests.ts b/types/jquery/jquery-tests.ts index 967da36442..84c1e66841 100644 --- a/types/jquery/jquery-tests.ts +++ b/types/jquery/jquery-tests.ts @@ -57,35 +57,35 @@ function JQueryStatic() { // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/19597#issuecomment-378218432 function issue_19597_378218432() { - let myDiv = $(document.createElement('div')); + const myDiv = $(document.createElement('div')); // $ExpectType JQuery myDiv; myDiv.on('click', (evt) => { - let target = evt.target; + const target = evt.target; // $ExpectType HTMLDivElement target; }); - let myDiv1 = $(document.createElement('div')); + const myDiv1 = $(document.createElement('div')); - let myForcedDiv: JQuery = $(document.createElement('div')) as any; + const myForcedDiv: JQuery = $(document.createElement('div')) as any; myForcedDiv.on('click', (evt) => { - let target = evt.target; // HTMLDivElement + const target = evt.target; // HTMLDivElement // $ExpectType HTMLDivElement target; }); - let myDoc = $(document); + const myDoc = $(document); // $ExpectType JQuery myDoc; myDoc.on('click', (evt) => { - let target = evt.target; + const target = evt.target; // $ExpectType Document target; }); - let myDocForced: JQuery = $(document); - let myWindow = $(window); + const myDocForced: JQuery = $(document); + const myWindow = $(window); // $ExpectType JQuery myWindow; - let myWindowForced: JQuery = $(window); + const myWindowForced: JQuery = $(window); // $ExpectType JQuery myWindowForced; } @@ -730,7 +730,7 @@ function JQueryStatic() { function map() { // $ExpectType number[] - $.map([1, 2, 3], function (elementOfArray, indexInArray) { + $.map([1, 2, 3], function(elementOfArray, indexInArray) { // $ExpectType Window this; // $ExpectType number @@ -742,7 +742,7 @@ function JQueryStatic() { }); // $ExpectType number[] - $.map([1, 2, 3], function (elementOfArray, indexInArray) { + $.map([1, 2, 3], function(elementOfArray, indexInArray) { // $ExpectType Window this; // $ExpectType number @@ -754,7 +754,7 @@ function JQueryStatic() { }); // $ExpectType (number | null)[] - $.map([1, 2, 3], function (elementOfArray, indexInArray) { + $.map([1, 2, 3], function(elementOfArray, indexInArray) { // $ExpectType Window this; // $ExpectType number @@ -766,7 +766,7 @@ function JQueryStatic() { }); // $ExpectType (number | undefined)[] - $.map([1, 2, 3], function (elementOfArray, indexInArray) { + $.map([1, 2, 3], function(elementOfArray, indexInArray) { // $ExpectType Window this; // $ExpectType number @@ -781,7 +781,7 @@ function JQueryStatic() { $.map({ myProp: true, name: 'Rogers', - }, function (propertyOfObject, key) { + }, function(propertyOfObject, key) { // $ExpectType Window this; // $ExpectType string | boolean @@ -801,7 +801,7 @@ function JQueryStatic() { $.map({ myProp: true, name: 'Rogers', - }, function (propertyOfObject, key) { + }, function(propertyOfObject, key) { // $ExpectType Window this; // $ExpectType string | boolean @@ -817,7 +817,7 @@ function JQueryStatic() { myProp: true, name: 'Rogers', anotherProp: 70, - }, function (propertyOfObject, key) { + }, function(propertyOfObject, key) { // $ExpectType Window this; // $ExpectType string | number | boolean @@ -840,7 +840,7 @@ function JQueryStatic() { myProp: true, name: 'Rogers', anotherProp: 70, - }, function (propertyOfObject, key) { + }, function(propertyOfObject, key) { // $ExpectType Window this; // $ExpectType string | number | boolean @@ -2153,9 +2153,8 @@ function JQueryStatic() { } function JQuery() { - function type_assertion() { - const $el = $(document.createElement('canvas')); - const $canvas = $el as JQuery; + function type_annotation() { + const $canvas: JQuery = $(document.createElement('canvas')); } function iterable() { @@ -7074,6 +7073,7 @@ function JQuery_Promise3() { interface I8 { kind: 'I8'; } interface I9 { kind: 'I9'; } + // tslint:disable-next-line:ban-types const p: JQuery.Promise3 = {} as any; const p1: JQuery.Promise3 = {} as any; const p2: JQuery.Promise3 = {} as any; @@ -7451,7 +7451,7 @@ function JQuery_Promise3() { }); // $ExpectType PromiseBase, never, SuccessTextStatus, ErrorTextStatus, never, jqXHR, string, never, never, never, never> a; - const b: JQuery.Promise3, never, JQuery.Ajax.SuccessTextStatus, JQuery.Ajax.ErrorTextStatus, never, JQuery.jqXHR, string, never> = a; + const b: JQuery.Promise3 = a; } // $ExpectType PromiseBase @@ -7472,6 +7472,7 @@ function JQuery_Promise3() { } async function testAsync(p: JQuery.Promise3): Promise { + // tslint:disable-next-line:await-promise const s: string = await p; return s; } @@ -7616,6 +7617,7 @@ function JQuery_Promise2(p: JQuery.Promise2): Promise { + // tslint:disable-next-line:await-promise const s: string = await p; return s; } diff --git a/types/jquery/tslint.json b/types/jquery/tslint.json index d1d7bd0a0a..1d12f59138 100644 --- a/types/jquery/tslint.json +++ b/types/jquery/tslint.json @@ -1,24 +1,16 @@ { "extends": "dtslint/dt.json", "rules": { - // All are TODOs - "await-promise": false, - "ban-types": false, "callable-types": false, "interface-name": false, "no-any-union": false, + "no-declare-current-package": false, + + "ban-types": false, "no-arg": false, "no-boolean-literal-compare": false, - "no-const-enum": false, - "no-declare-current-package": false, - "no-empty-interface": false, - "no-misused-new": false, "no-object-literal-type-assertion": false, - "no-redundant-jsdoc-2": false, - "no-unnecessary-generics": false, - "no-unnecessary-qualifier": false, "no-unnecessary-type-assertion": false, - "no-var": false, "no-var-keyword": false, "object-literal-key-quotes": false, "object-literal-shorthand": false, @@ -29,9 +21,7 @@ "prefer-for-of": false, "prefer-switch": false, "prefer-template": false, - "space-before-function-paren": false, "space-within-parens": false, - "triple-equals": false, - "use-default-type-parameter": false + "triple-equals": false } } From f3b10b2269652e51347b84fedf9c8ae329fc6a1f Mon Sep 17 00:00:00 2001 From: Leonard Thieu Date: Tue, 19 Jun 2018 13:56:49 -0400 Subject: [PATCH 3/3] [jquery] Add tests to cover the changed APIs. --- types/jquery/jquery-tests.ts | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/types/jquery/jquery-tests.ts b/types/jquery/jquery-tests.ts index 84c1e66841..c569758fb0 100644 --- a/types/jquery/jquery-tests.ts +++ b/types/jquery/jquery-tests.ts @@ -17,6 +17,9 @@ function JQueryStatic() { } }); + // $ExpectType JQuery + $('

'); + // $ExpectType JQuery $('span', new HTMLElement()); @@ -29,20 +32,20 @@ function JQueryStatic() { // $ExpectType JQuery $('span'); - // $ExpectType JQuery - $('

'); + // $ExpectType JQuery + $('.mysvgline'); - // $ExpectType JQuery - $(new HTMLElement()); + // $ExpectType JQuery + $(new HTMLParagraphElement()); - // $ExpectType JQuery - $([new HTMLElement()]); + // $ExpectType JQuery + $([new HTMLParagraphElement()]); // $ExpectType JQuery<{ foo: string; hello: string; }> $({ foo: 'bar', hello: 'world' }); - // $ExpectType JQuery - $($('p')); + // $ExpectType JQuery + $($(document.createElementNS("http://www.w3.org/2000/svg", "svg"))); // $ExpectType JQuery $(function($) { @@ -52,9 +55,20 @@ function JQueryStatic() { $; }); + // $ExpectType JQuery + $(function($) { + // $ExpectType Document + this; + // $ExpectType JQueryStatic + $; + }); + // $ExpectType JQuery $(); + // $ExpectType JQuery + $(); + // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/19597#issuecomment-378218432 function issue_19597_378218432() { const myDiv = $(document.createElement('div'));