打字稿。如何在一个模块中导出两个 类(在单独的文件中)?

Typescript. How to export two classes (in separate files) in one module?

我在两个单独的文件中声明了两个 类。

a.ts

export class AClass {

  public constructor () {
    console.log('AClass');
  }

}

b.ts

export class BClass {

  public constructor () {
    console.log('BClass');
  }

}

我想将它们合并到一个模块中。我如何实现它?

///<reference path='a.ts' />
///<reference path='b.ts' />

module Common {

  export class A extends AClass {}
  export class B extends BClass {}

}

说:

Cannot find name 'AClass'.

Cannot find name 'BClass'.

我可以导入类

import AClass = require('a');
import BClass = require('b');

module Common {

}

但是我怎样才能正确导出它们呢?

在文档中找不到任何信息。请告诉我在一个模块中实现声明的最佳方式?提前谢谢你

如果您像展示的那样声明 class,则将其包含在 'global' 命名空间中。要在模块内声明 class 只需将其包装在模块声明中:

module Common{
    export class ClassA{}
}

您可以在多个文件中重新声明模块,只会为该模块创建一个 javascript 对象。

您的 class 声明前面有 export

export class AClass {

这会将源文件变成外部模块。这意味着您将需要使用另一个模块中的 import/require

import a = require("a");

module Common {
    export class A extends a.AClass {}
}

请注意 AClass 似乎是 a 的成员,因为这就是我将其包含模块导入的内容。

或者,您可以在包含的单个 class 之后重命名 a 模块,例如

AClass.ts

class AClass {
  public constructor () {
    console.log('AClass');
  }    
}

export = AClass;

通过"assigning"到export我们让class成为模块的整个单输出。因此在另一个模块中:

import AClass = require("AClass");

var a = new AClass(); // no prefix needed

如果您的模块只导出一个 class(或函数),这会更简洁。

我是这样做的:

m/a.ts

export class A {
}

m/b.ts

export class B {
}

m/index.ts

export { A } from './a.ts';
export { B } from './b.ts';

然后我做: consumer.ts

import { A, B } from './m';