とある JavaScript のソースを読んでいて、以下の動作をしているコードを見つけました。
- 関数の引数にクラス(インスタンスではなく)を渡し、
- 関数の中で new している
TypeScript でも同様のことがしたいと思い、書いてみましたが、
それっぽく動いていますが、こんな書き方で合っているかが自信がありません。
(コメントの「★」部分、typeof Animal
のとこ)
以下について分かる人がいたらコメントをいただけないでしょうか?
- この書き方は、合っているか
- この書き方の呼び名「◯◯渡し・・?」
- 他に定石みたいな書き方があるか
typescript
1class Animal { 2 public greet(): string { return "..."; } 3} 4class Dog { 5 public greet(): string { return "Bow!"; } 6} 7function createAnimal(AnimalType: typeof Animal): Animal { // ← ★これで合っているのか 8 return new AnimalType(); 9} 10const dog = createAnimal(Dog); 11assert.equal(dog.greet(), "Bow!"); 12assert.equal(typeof Animal, "function");
比較用に JavaScript でも同様のコードを書きました。
JavaScript
1class Animal { 2 sayHello() { return "..."; } 3} 4class Dog extends Animal { 5 sayHello() { return "Bow!"; } 6} 7function createAnimal(AnimalType) { // ← これと同じことをしようとした 8 return new AnimalType(); 9} 10const dog = createAnimal(Dog); 11assert.equal(dog.sayHello(), "Bow!");
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/16 11:42