继承AMD模块的内部类

时间:2012-11-27 23:47:48

标签: typescript

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

export module ABC{
  export class classA {
  }
}

我想从B类继承classA。

class classB {
}

如果我这样做

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

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

我怎样才能使它工作? 提前致谢


确定,

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

File1.ts

export module moduleA {

    export class classA {

      subscribed: bool;

      constructor () { }

      public unsubscribeLogOff(eventName) {
        this.subscribed = false;
      }
      public subscribeLogOff(eventName) {
        this.subscribed = true;
      }
    }
}

File2.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 订阅属性维持其值,以便在调用 unsubscribeLogOff 订阅的值为真。

但是当我打电话给 unsubscribeLogOff 订阅的值未定义时,情况并非如此。

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

由于

1 个答案:

答案 0 :(得分:1)

为了使这项工作,您的代码应如下所示:

<强> File1.ts

export module ABC {
    export class classA {
    }
}

<强> File2.ts

import otherFile = module('file1');

export module ABC {
    export class classA extends otherFile.ABC.classA {
    }
}

请注意,如果您有一个标有export的顶级对象,那么通常不需要在module块中将您的内容包裹得更深一些。