/** * Mixins are a way of extending classes with additional functionality. * For more info: https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern */ /** * Copies the methods from the mixin class to the base class. * The constructor is not copied. It has to be called using 'extend'. */ export declare function extendClass(baseClass: any, mixinClasses: any[]): void; export declare function extendConstructor(baseClass: any, mixinClass: any, ...constructorArgs: any[]): any; /** * We use '_constructor' instead of 'constructor' because * you can't call a class's constructor without the 'new' keyword. * But we don't want to use 'new' because we want to modify an existing object. */ export interface Mixin { _constructor?(): any; } export interface Destroyable { destroy$: any; }