我正在尝试研究如何返回声明静态方法的类型。这也适用于派生类型。
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()
,Animal
和Dog
上拨打Cat
应该会产生:
Animal.getType() // Animal
Dog.getType() // Dog
Cat.getType() // Cat
我甚至不确定这是可能的,但如果有人能指出我正确的方向,那就太棒了!
作为旁注 - 我希望能够做的是使用getType()
返回声明类型,以便我可以迭代该类型的其他静态成员,基本上相当于
Object.keys(Dog) // ["Poodle", "Labrador", "Husky"]
答案 0 :(得分:0)
我自己发现了......
static getType(): any {
return Object
.create(this.prototype)
.constructor;
}