TypeScript - 从静态方法获取声明类型

时间:2017-10-24 10:11:16

标签: typescript

我正在尝试研究如何返回声明静态方法的类型。这也适用于派生类型。

class Animal {
    static getType(): any {
        // Here I want to return the type that declares this method,
        // In this case Animal.
        // For derived types, it should return i.e. Dog, Cat, etc.

        // I tried...
        // return this.prototype; // But this doesn't work.
    }
}

class Dog extends Animal {

}

class Cat extends Animal {

}

分别在getType()AnimalDog上拨打Cat应该会产生:

Animal.getType() // Animal
Dog.getType() // Dog
Cat.getType() // Cat

我甚至不确定这是可能的,但如果有人能指出我正确的方向,那就太棒了!

作为旁注 - 我希望能够做的是使用getType()返回声明类型,以便我可以迭代该类型的其他静态成员,基本上相当于

Object.keys(Dog) // ["Poodle", "Labrador", "Husky"]

1 个答案:

答案 0 :(得分:0)

我自己发现了......

static getType(): any {
    return Object
        .create(this.prototype)
        .constructor;
}