typescript docは、次のコードについて何かを言う:活字体コンストラクタ
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
interface ClockInterface {
tick();
}
function createClock(ctor: ClockConstructor, hour: number, minute: number): ClockInterface {
return new ctor(hour, minute);
}
class DigitalClock implements ClockInterface {
constructor(h: number, m: number) { }
tick() {
console.log("beep beep");
}
}
class AnalogClock implements ClockInterface {
constructor(h: number, m: number) { }
tick() {
console.log("tick tock");
}
}
let digital = createClock(DigitalClock, 12, 17);
let analog = createClock(AnalogClock, 7, 32);
...
をcreateClockの最初のパラメータは createClock(AnalogClock、7、32で、型ClockConstructorであるので)、AnalogClockに正しいコンストラクタ署名が であることを確認します。
つまり、なぜあなたはhere
を見ることができるようにしかし、ない同じコードコンストラクタをコンパイルし、エラーをスローしませんか?私は何か不足していますか? TSクラスのコンストラクタは、まだコンパイルJSに1を作成します持っていない