diff --git a/types/backbone-fetch-cache/backbone-fetch-cache-tests.ts b/types/backbone-fetch-cache/backbone-fetch-cache-tests.ts index 072e3c29ce..6c2d852961 100644 --- a/types/backbone-fetch-cache/backbone-fetch-cache-tests.ts +++ b/types/backbone-fetch-cache/backbone-fetch-cache-tests.ts @@ -64,7 +64,7 @@ const modelOpts: Backbone.ModelFetchWithCacheOptions = { context: {}, }; -const hoge = new Backbone.Model; +const hoge = new Backbone.Model() as Backbone.ModelWithCache; hoge.fetch(modelOpts); const collectionOpts: Backbone.CollectionFetchWithCacheOptions = { @@ -76,5 +76,5 @@ const collectionOpts: Backbone.CollectionFetchWithCacheOptions = { prefillSuccess: (self: any) => { }, }; -const fuga = new Backbone.Collection; +const fuga = new Backbone.Collection() as Backbone.CollectionWithCache; fuga.fetch(collectionOpts); diff --git a/types/backbone-relational/index.d.ts b/types/backbone-relational/index.d.ts index a1c8c3eefb..403759ac97 100644 --- a/types/backbone-relational/index.d.ts +++ b/types/backbone-relational/index.d.ts @@ -122,7 +122,19 @@ declare module 'backbone' { } - export class Store extends Events { + export class Store implements Events { + on(eventName: string, callback?: (...args: any[]) => void, context?: any): any; + on(eventMap: EventsHash): any; + on(eventName: any, callback?: any, context?: any): any; + off(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + trigger(eventName: string, ...args: any[]): any; + bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; + initializeRelation(model, relation, options); addModelScope(scope:any):void; diff --git a/types/backbone.marionette/index.d.ts b/types/backbone.marionette/index.d.ts index 609bf37b67..4edaba87b7 100644 --- a/types/backbone.marionette/index.d.ts +++ b/types/backbone.marionette/index.d.ts @@ -407,9 +407,21 @@ export interface ObjectOptions extends RadioMixinOptions { * A base class which other classes can extend from. Object incorporates many * backbone conventions and utilities like initialize and Backbone.Events. */ -export class Object extends Backbone.Events implements CommonMixin, RadioMixin { +export class Object implements CommonMixin, RadioMixin, Backbone.Events { constructor(options?: ObjectOptions); + on(eventName: string, callback?: (...args: any[]) => void, context?: any): any; + on(eventMap: EventsHash): any; + on(eventName: any, callback?: any, context?: any): any; + off(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + trigger(eventName: string, ...args: any[]): any; + bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; + /** * Receives a hash of event names and functions and/or function names, * and returns the same hash with the function names replaced with the diff --git a/types/backbone.paginator/backbone.paginator-tests.ts b/types/backbone.paginator/backbone.paginator-tests.ts index f24e2855f5..0c1b0cf9a8 100644 --- a/types/backbone.paginator/backbone.paginator-tests.ts +++ b/types/backbone.paginator/backbone.paginator-tests.ts @@ -70,8 +70,8 @@ namespace InitializingWithOptions { }); var testCollection6 = new TestCollection([ - {}, - {}, + {} as TestModel, + {} as TestModel, ]); } diff --git a/types/backbone.radio/index.d.ts b/types/backbone.radio/index.d.ts index 12fc6d384f..ac953aa00b 100644 --- a/types/backbone.radio/index.d.ts +++ b/types/backbone.radio/index.d.ts @@ -71,7 +71,18 @@ declare module "backbone" { stopReplying(commandName?: string, callback?: (...args: any[]) => any, context?: any): Requests; } - class Channel extends Backbone.Events implements Commands, Requests { + class Channel implements Commands, Requests, Backbone.Events { + on(eventName: string, callback?: (...args: any[]) => void, context?: any): any; + on(eventMap: EventsHash): any; + on(eventName: any, callback?: any, context?: any): any; + off(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + trigger(eventName: string, ...args: any[]): any; + bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; channelName: string; reset(): Channel; diff --git a/types/backbone/backbone-tests.ts b/types/backbone/backbone-tests.ts index 65a1463978..563c21634c 100644 --- a/types/backbone/backbone-tests.ts +++ b/types/backbone/backbone-tests.ts @@ -1,6 +1,6 @@ function test_events() { - var object = new Backbone.Events(); + var object = Backbone.Events; object.on("alert", (eventName: string) => alert("Triggered " + eventName)); object.trigger("alert", "an event"); diff --git a/types/backbone/index.d.ts b/types/backbone/index.d.ts index 81bce43606..ca36541735 100644 --- a/types/backbone/index.d.ts +++ b/types/backbone/index.d.ts @@ -3,6 +3,7 @@ // Definitions by: Boris Yankov // Natan Vivo // kenjiru +// jjoekoullas // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -94,21 +95,34 @@ declare namespace Backbone { [selector: string]: string | {(eventObject: JQueryEventObject): void}; } - class Events { - on(eventName: string, callback?: Function, context?: any): any; + export const Events: Events; + interface Events { + on(eventName: string, callback?: (...args: any[]) => void, context?: any): any; on(eventMap: EventsHash): any; - off(eventName?: string, callback?: Function, context?: any): any; + off(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; trigger(eventName: string, ...args: any[]): any; - bind(eventName: string, callback: Function, context?: any): any; - unbind(eventName?: string, callback?: Function, context?: any): any; + bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; - once(events: string, callback: Function, context?: any): any; - listenTo(object: any, events: string, callback: Function): any; - listenToOnce(object: any, events: string, callback: Function): any; - stopListening(object?: any, events?: string, callback?: Function): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; } - class ModelBase extends Events { + class ModelBase implements Events { + on(eventName: string, callback?: Function, context?: any): any; + on(eventMap: EventsHash): any; + on(eventName: any, callback?: any, context?: any): any + off(eventName?: string, callback?: Function, context?: any): any + trigger(eventName: string, ...args: any[]): any + bind(eventName: string, callback: Function, context?: any): any + unbind(eventName?: string, callback?: Function, context?: any): any + once(events: string, callback: Function, context?: any): any + listenTo(object: any, events: string, callback: Function):any + listenToOnce(object: any, events: string, callback: Function): any + stopListening(object?: any, events?: string, callback?: Function): any + parse(response: any, options?: any): any; toJSON(options?: any): any; sync(...arg: any[]): JQueryXHR; @@ -353,7 +367,7 @@ declare namespace Backbone { without(...values: TModel[]): TModel[]; } - class Router extends Events { + class Router extends EventSignatures { /** * Do not use, prefer TypeScript's extend functionality. @@ -382,7 +396,7 @@ declare namespace Backbone { var history: History; - class History extends Events { + class History extends EventSignatures { handlers: any[]; interval: number; @@ -419,7 +433,7 @@ declare namespace Backbone { attributes?: {[id: string]: any}; } - class View extends Events { + class View extends EventSignatures { /** * Do not use, prefer TypeScript's extend functionality. @@ -471,3 +485,21 @@ declare namespace Backbone { function noConflict(): typeof Backbone; var $: JQueryStatic; } + +/** + * This is not for external use and is only here as a convenient way to + * specify signatures for internal implementers of Backbone.Events + */ +declare abstract class EventSignatures implements Backbone.Events { + on(eventName: string, callback?: (...args: any[]) => void, context?: any): any; + on(eventMap: Backbone.EventsHash): any; + off(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + trigger(eventName: string, ...args: any[]): any; + bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; +} \ No newline at end of file diff --git a/types/giraffe/index.d.ts b/types/giraffe/index.d.ts index 6b88b5d4b8..abce777c20 100644 --- a/types/giraffe/index.d.ts +++ b/types/giraffe/index.d.ts @@ -145,7 +145,19 @@ declare namespace Giraffe { namespace Contrib { - class Controller extends Backbone.Events implements GiraffeObject { + class Controller implements GiraffeObject, Backbone.Events { + on(eventName: string, callback?: (...args: any[]) => void, context?: any); + on(eventMap: Backbone.EventsHash); + on(eventName: any, callback?: any, context?: any) + off(eventName?: string, callback?: (...args: any[]) => void, context?: any) + trigger(eventName: string, ...args: any[]) + bind(eventName: string, callback: (...args: any[]) => void, context?: any) + unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any) + once(events: string, callback: (...args: any[]) => void, context?: any): any; + listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; + app: App; }