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.tsnamespace Test {
export class Lib {
public hello(): string {
console.log("hello");
return "hello";
}
}
}
src/foo.tsnamespace 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.tsimport {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?