【问题标题】:Inheriting a inner class of an AMD Module继承 AMD 模块的内部类
【发布时间】:2012-11-15 17:28:09
【问题描述】:

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

export module ABC{
  export class classA {
  }
}

我想从 B 类继承 A 类。

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 的属性 subscribed 保持它的值,所以当调用 unsubscribeLogOff subscribed 的值为 true。

但当我调用 unsubscribeLogOff 时,情况并非如此,subscribed 的值是 undefined

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

谢谢

【问题讨论】:

  • 如果您的问题有用且正确,请考虑将问题的答案标记为“已接受”。见here for instructions

标签: typescript


【解决方案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 块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多