//// [declFileGenericType2.ts] declare module templa.mvc { interface IModel { } } declare module templa.mvc { interface IController { } } declare module templa.mvc { class AbstractController implements mvc.IController { } } declare module templa.mvc.composite { interface ICompositeControllerModel extends mvc.IModel { getControllers(): mvc.IController[]; } } module templa.dom.mvc { export interface IElementController extends templa.mvc.IController { } } // Module module templa.dom.mvc { export class AbstractElementController extends templa.mvc.AbstractController implements IElementController { constructor() { super(); } } } // Module module templa.dom.mvc.composite { export class AbstractCompositeElementController extends templa.dom.mvc.AbstractElementController { public _controllers: templa.mvc.IController[]; constructor() { super(); this._controllers = []; } } } //// [declFileGenericType2.js] var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } __.prototype = b.prototype; d.prototype = new __(); }; var templa; (function (templa) { (function (dom) { (function (mvc) { var AbstractElementController = (function (_super) { __extends(AbstractElementController, _super); function AbstractElementController() { _super.call(this); } return AbstractElementController; })(templa.mvc.AbstractController); mvc.AbstractElementController = AbstractElementController; })(dom.mvc || (dom.mvc = {})); var mvc = dom.mvc; })(templa.dom || (templa.dom = {})); var dom = templa.dom; })(templa || (templa = {})); var templa; (function (templa) { (function (dom) { (function (mvc) { (function (composite) { var AbstractCompositeElementController = (function (_super) { __extends(AbstractCompositeElementController, _super); function AbstractCompositeElementController() { _super.call(this); this._controllers = []; } return AbstractCompositeElementController; })(templa.dom.mvc.AbstractElementController); composite.AbstractCompositeElementController = AbstractCompositeElementController; })(mvc.composite || (mvc.composite = {})); var composite = mvc.composite; })(dom.mvc || (dom.mvc = {})); var mvc = dom.mvc; })(templa.dom || (templa.dom = {})); var dom = templa.dom; })(templa || (templa = {})); //// [declFileGenericType2.d.ts] declare module templa.mvc { } declare module templa.mvc { } declare module templa.mvc { } declare module templa.mvc.composite { } declare module templa.dom.mvc { interface IElementController extends templa.mvc.IController { } } declare module templa.dom.mvc { class AbstractElementController extends templa.mvc.AbstractController implements IElementController { constructor(); } } declare module templa.dom.mvc.composite { class AbstractCompositeElementController extends AbstractElementController { _controllers: templa.mvc.IController[]; constructor(); } } //// [DtsFileErrors] ==== tests/cases/compiler/declFileGenericType2.d.ts (6 errors) ==== declare module templa.mvc { } declare module templa.mvc { } declare module templa.mvc { } declare module templa.mvc.composite { } declare module templa.dom.mvc { interface IElementController extends templa.mvc.IController { ~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc' has no exported member 'IModel'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc' has no exported member 'IController'. } } declare module templa.dom.mvc { class AbstractElementController extends templa.mvc.AbstractController implements IElementController { ~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc' has no exported member 'IModel'. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc' has no exported member 'AbstractController'. constructor(); } } declare module templa.dom.mvc.composite { class AbstractCompositeElementController extends AbstractElementController { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc.composite' has no exported member 'ICompositeControllerModel'. _controllers: templa.mvc.IController[]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! Module 'templa.mvc' has no exported member 'IController'. constructor(); } }