我有一个文件a.ts,其中包含模块内的A类:
module moduleA {
export class A {
}
}
export = moduleA.A;
另一个导入A类的文件b.ts:
import A = require('a.ts');
class B {
// This leads to an error: Cannot find name 'A'
private test: A = null;
constructor() {
// But this is possible
var xyz = new A();
}
}
有趣的是,当我想在A中使用A作为类型时,Typescript会显示错误。但是,实例化A不会导致错误。
任何人都可以解释一下,为什么会这样? 非常感谢你!
答案 0 :(得分:6)
不需要使用命名空间module moduleA
......你可以这样做......
关键字module
现在与命名空间(C#)同义...最佳做法是使用ES6样式模块结构,基本上每个文件都是一个模块并导出您需要的内容并导入您需要的内容别处。
// a.ts
export class A {}
// b.ts
import { A } from './a';
class B {
private test: A = null; // will not error now
constructor () {
var xyz = new A();
}
}
注意:这是基于TypeScript v1.5 +