TypeScriptの型についての質問です。
以下のコードで、createClock()
の第一引数の型は ClockConstructor
ですが、コードの最後の方で ClockConstructor
ではなく ClockInterface
を実装したクラスが渡されていて、エラーが発生しないのは何故なのでしょうか。
よろしくお願いいたします。
TypeScript
1interface ClockConstructor { 2 new (hour: number, minute: number): ClockInterface; 3} 4interface ClockInterface { 5 tick(): void; 6} 7 8function createClock(ctor: ClockConstructor, hour: number, minute: number): ClockInterface { 9 return new ctor(hour, minute); 10} 11 12class DigitalClock implements ClockInterface { 13 constructor(h: number, m: number) { 14 console.log("Digital"); 15 } 16 tick() { 17 console.log("beep beep"); 18 } 19} 20 21class AnalogClock implements ClockInterface { 22 constructor(h: number, m: number) { 23 console.log("Analog"); 24 } 25 tick() { 26 console.log("tick tick"); 27 } 28} 29 30let digital = createClock(DigitalClock, 12, 17); 31let analog = createClock(AnalogClock, 7, 32);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/22 10:23