2017-10-24 15 views
0

静的メソッドを宣言する型を返す方法を工夫しています。これは派生型の場合にも有効です。それぞれAnimalgetType()DogCatを呼び出す静的メソッドから宣言型を取得する

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 { 

} 

、生成する必要があります:

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

私はそれが可能だとしてもわからないんだけど、誰もが正しい方向に私を指すことができれば、それは次のようになりすばらしいです!私はそのタイプの他の静的メンバーを反復処理することができるように、宣言型を返すためにgetType()を使用している

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

答えて

0
の本質的に等価を行うことができるようにしたいものを - 側の注意点としては

私はそれを自分で見つけました...

static getType(): any { 
    return Object 
     .create(this.prototype) 
     .constructor; 
} 
関連する問題