1// @declaration: true 2 3declare module templa.mvc { 4 interface IModel { 5 } 6} 7declare module templa.mvc { 8 interface IController<ModelType extends templa.mvc.IModel> { 9 } 10} 11declare module templa.mvc { 12 class AbstractController<ModelType extends templa.mvc.IModel> implements mvc.IController<ModelType> { 13 } 14} 15declare module templa.mvc.composite { 16 interface ICompositeControllerModel extends mvc.IModel { 17 getControllers(): mvc.IController<mvc.IModel>[]; 18 } 19} 20module templa.dom.mvc { 21 export interface IElementController<ModelType extends templa.mvc.IModel> extends templa.mvc.IController<ModelType> { 22 } 23} 24// Module 25module templa.dom.mvc { 26 27 export class AbstractElementController<ModelType extends templa.mvc.IModel> extends templa.mvc.AbstractController<ModelType> implements IElementController<ModelType> { 28 constructor() { 29 super(); 30 } 31 } 32} 33// Module 34module templa.dom.mvc.composite { 35 export class AbstractCompositeElementController<ModelType extends templa.mvc.composite.ICompositeControllerModel> extends templa.dom.mvc.AbstractElementController<ModelType> { 36 public _controllers: templa.mvc.IController<templa.mvc.IModel>[]; 37 constructor() { 38 super(); 39 this._controllers = []; 40 } 41 } 42} 43