我正在尝试从基类方法中获取派生类型的名称。我有如下类:
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)”。
有没有办法解决这个问题?
答案 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');