继承AMD模块的内部类



在Typescript中,我有一个这样的模块:

export module ABC{
export class classA {
}
}

我想从B类继承A类。

class classB {
}

如果我做这样的

export module ABC{
export class classA extends classB {
}
}

编译器告诉我类B必须是一个类。顺便说一下,类B位于一个单独的文件中。

我怎样才能让它工作???提前感谢


好,

我决定定义一个模块和另一个模块的内部类的内部实例属性,而不是扩展内部类。就像这样:

文件1.ts

export module moduleA {
export class classA {
subscribed: bool;
constructor () { }
public unsubscribeLogOff(eventName) {
this.subscribed = false;
}
public subscribeLogOff(eventName) {
this.subscribed = true;
}
}
}

文件2.ts

import m = module("moduleA"); 
export module moduleB {
var instanceA: m.moduleA.classA = null;
export function activate() {
if( this.instanceA == null ) instanceA = new m.moduleA.classA();
instanceA.subscribeLogOff(eventName);
}
export function deactivate() {
if( instanceA == null ) return;
instanceA.unsubscribeLogOff(eventName);
}
} 

这里的问题是,我希望在调用subscribeLogOff后,classA的属性Subscribe保持其值,因此当调用unsubscribeLogOff时,

subscribe但当我调用unsubscribeLogOff时,情况并非如此,已订阅的值为未定义

我无法理解。你能帮我吗???

感谢

要实现这一点,您的代码应该如下所示:

文件1.ts

export module ABC {
export class classA {
}
}

文件2.ts

import otherFile = module('file1');
export module ABC {
export class classA extends otherFile.ABC.classA {
}
}

请注意,如果您有一个用export标记的顶级对象,那么通常不需要在module块中将您的东西更深地包装一层。

最新更新