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

ind*_*lic 7 typescript

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

a.ts

export class AClass {

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

}
Run Code Online (Sandbox Code Playgroud)

b.ts

export class BClass {

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

}
Run Code Online (Sandbox Code Playgroud)

我想在一个模块中合并它们.我怎么能实现它?

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

module Common {

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

}
Run Code Online (Sandbox Code Playgroud)

说:

找不到名字'AClass'.

找不到名字'BClass'.

我可以导入课程

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

module Common {

}
Run Code Online (Sandbox Code Playgroud)

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

在文档中找不到任何信息.请告诉我在一个模块中实现声明的最佳方法?先感谢您

Jos*_*ulf 19

我是这样做的:

米/ a.ts

export class A {
}
Run Code Online (Sandbox Code Playgroud)

米/ b.ts

export class B {
}
Run Code Online (Sandbox Code Playgroud)

米/ index.ts

export { A } from './a.ts';
export { B } from './b.ts';
Run Code Online (Sandbox Code Playgroud)

然后我做: consumer.ts

import { A, B } from './m';
Run Code Online (Sandbox Code Playgroud)


Raf*_*fal 6

如果您声明类似于您展示的类,则将其包含在"全局"命名空间中.要在模块中声明类,只需将其包装在模块声明中:

module Common{
    export class ClassA{}
}
Run Code Online (Sandbox Code Playgroud)

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

  • Typescript编译器将为每个ts文件生成一个js文件,但是有一些方法可以将js文件捆绑到单个文件中. (2认同)

Dan*_*ker 5

export在你的类声明前面有:

export class AClass {
Run Code Online (Sandbox Code Playgroud)

这会将源文件转换为外部模块。这意味着您需要从另一个模块使用import/ require

import a = require("a");

module Common {
    export class A extends a.AClass {}
}
Run Code Online (Sandbox Code Playgroud)

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

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

AClass.ts

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

export = AClass;
Run Code Online (Sandbox Code Playgroud)

通过“分配”,export我们使该类成为模块的整个单一输出。因此在另一个模块中:

import AClass = require("AClass");

var a = new AClass(); // no prefix needed
Run Code Online (Sandbox Code Playgroud)

如果您的模块只导出单个类(或函数),这会更整洁。