从Base类方法获取派生类名

时间:2014-01-29 09:12:41

标签: jquery typescript

我正在尝试从基类方法中获取派生类型的名称。我有如下类:

export class Base{   
    public Add(value: any) {

    }
}

class Derived extends Base{
    public Add(value: any) {
        Base.prototype.Add.call(this, value);
    } 
}

我尝试在Base类的Add()中使用$ .type(this),它将类型作为object.But,而调试代码类型显示为“Object(Derived)”。

有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:0)

首先,您尚未在代码段中定义继承。使用extends Typescript 中创建类继承。

class Derived extends Base {
..

第二个 - 要访问基类,您可以使用super关键字:

public Add(value: any) {
   super.Add.call(this, value);
} 

答案 1 :(得分:0)

每个对象都有constructor函数,您可以查看其名称属性。

class Alpha { }
var a = new Alpha();
alert((<any>a).constructor.name);  // Alpha

链路

你会注意到我必须将a投射到any。 {(1}}属性未在lib.d.ts中定义,我认为这是因为不鼓励使用它。缩小也会改变结果。我只会将它用于调试目的。

答案 2 :(得分:0)

您需要使用构造函数的name属性,如下所示:

class Base {   
    public Add(value: any) {
        alert(this.constructor["name"]); // alerts 'Derived' in this example
    }
}

class Derived extends Base {
    public Add(value: any) {
        super.Add(value); // use super to call methods on the base class
    }
}

(new Derived).Add('someValue');