//// [moduleScopingBug.ts] module M { var outer: number; function f() { var inner = outer; // Ok } class C { constructor() { var inner = outer; // Ok } } module X { var inner = outer; // Error: outer not visible } } //// [moduleScopingBug.js] var M; (function (M) { var outer; function f() { var inner = outer; // Ok } var C = (function () { function C() { var inner = outer; // Ok } return C; })(); var X; (function (X) { var inner = outer; // Error: outer not visible })(X || (X = {})); })(M || (M = {}));