1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| interface ClockInterface { tick() }
interface ClockConstructor { new (hour: number, minute: number): ClockInterface }
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("tick") } }
class AnalogClock implements ClockInterface { constructor(h: number, m: number) {}
tick() { console.log("tick22222") } }
let digital = createClock(DigitalClock, 12, 0) let analog = createClock(AnalogClock, 12, 1)
|