打字稿类型:{找不到名称'导入的类

时间:2015-11-02 12:19:59

标签: module typescript export

我有一个文件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不会导致错误。

任何人都可以解释一下,为什么会这样? 非常感谢你!

1 个答案:

答案 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 +