Búsqueda de sitios web

typescript - Mocha no puede encontrar clases en el espacio de nombres


Estoy intentando compilar TypeScript a un solo archivo JS. Dado que necesito que sea portátil (y no se ejecute en un navegador), necesito usar namespaces en lugar de módulos system o amd.

Problema: No se pueden ejecutar las pruebas. Ejecutar npm test resulta en:

src/foo.spec.ts (6,20): Cannot find namespace 'Test'. 

Aquí está mi programa de ejemplo corto:

tsconfig.json
{
  "compilerOptions": {
    "noImplicitAny": false,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": false,
    "outFile": "test.js"
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "src/**/*.spec.ts"
  ]
}
src/lib.ts
namespace Test {
    export class Lib {
        public hello(): string {
            console.log("hello");
            return "hello";
        }
    } 
}
src/foo.ts
namespace Test {
    // import Lib = Test.Lib; // < This doesn't work :(
    export class Foo {
        public sayHello(): string {
            return new Test.Lib().hello();
        }
    } 
}

new Test.Foo().sayHello();
src/foo.spec.ts
import {expect} from "chai";
import "mocha";

describe('Hello!', () => {
    it('We should say hello!', () => {
        const foo: Test.Foo = new Test.Foo();
        expect(foo.sayHello()).to.equal("hello");
    });
});
package.json
{
  "name": "test_typescript",
  "version": "1.0.0",
  "scripts": {
    "test": "mocha -r ts-node/register src/**/*.spec.ts"
  },
  "devDependencies": {
    "@types/chai": "^4.0.1",
    "@types/mocha": "^2.2.41",
    "chai": "^4.1.0",
    "mocha": "^3.4.2",
    "mocha-typescript": "^1.1.7",
    "ts-node": "^3.2.0",
    "typescript": "^2.4.1"
  }
}

¿Cómo puedo hacer que la prueba reconozca el espacio de nombres?