如何从typescript中的父类获取子类的名称?

时间:2017-12-03 09:40:39

标签: javascript typescript

如何在TypeScript中从基类本身获取子类的名称(它正在调用基类的构造函数)。我的代码设置如下:

class Animal{
    constructor(){ console.log(this.constructor.name)} //this is throwing error}
}
class Cow extends Animal{
 constructor(){ super() }
}
new Cow() // this should log "Cow"

在飞机Js this.constructor.name过去工作,但TypeScript似乎并非如此。 我得到的错误是:

 error TS2339: Property 'name' does not exist on type 'Function'.

请帮忙。谢谢

1 个答案:

答案 0 :(得分:0)

这应该失败的唯一原因是Internet Explorer / IE Mobile,因为Function.name基本支持不存在。在所有其他浏览器中,它应该可以工作。

如果你定位ESNEXT并且输出包含ECMAScript类(比如TypeScript那样),这甚至可以工作。以下代码适用于您快节奏的快乐浏览器......如果您通过TypeScript编译器运行它,普通版本也可以工作(除了上面说明的那样)。

class Animal {
    constructor() {
        console.log(this.constructor.name);
    }
}

class Cow extends Animal{
    constructor() {
        super();
    }
}

new Cow();