我在两个单独的文件中声明了两个类。
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 {}
}
说:
找不到名字'AClass'。
和
找不到名字'BClass'。
我可以导入课程
import AClass = require('a');
import BClass = require('b');
module Common {
}
但我怎样才能正确导出它们呢?
在文档中找不到任何信息。请告诉我在一个模块中实现声明的最佳方法?提前谢谢
答案 0 :(得分:17)
我这样做:
<强>米/ a.ts 强>
export class A {
}
<强>米/ b.ts 强>
export class B {
}
<强>米/ index.ts 强>
export { A } from './a.ts';
export { B } from './b.ts';
然后我这样做: 的 consumer.ts 强>
import { A, B } from './m';
答案 1 :(得分:6)
如果您声明类似于您展示的类,则将其包含在“全局”命名空间中。要在模块中声明类,只需将其包装在模块声明中:
module Common{
export class ClassA{}
}
您可以在多个文件中重新声明模块,只会为模块创建一个javascript对象。
答案 2 :(得分:4)
您的班级声明前面有export
:
export class AClass {
这会将源文件转换为外部模块。这意味着您需要使用其他模块中的import
/ require
:
import a = require("a");
module Common {
export class A extends a.AClass {}
}
请注意,AClass
似乎是a
的成员,因为这是我导入其包含模块的原因。
或者,您可以在其包含的单个类之后重命名a
模块,例如
<强> AClass.ts 强>
class AClass {
public constructor () {
console.log('AClass');
}
}
export = AClass;
通过&#34;分配&#34;到export
我们使该类成为模块的整个单输出。因此在另一个模块中:
import AClass = require("AClass");
var a = new AClass(); // no prefix needed
如果您的模块仅导出单个类(或函数),则这可能更整洁。