interface Clockinterface {
tick()
}
interface ClockConstructor {
new(hour:number,minute:number):Clockinterface
}
// 封装new方法
const createClock = (ctor:ClockConstructor,
hour:number,minute:number):Clockinterface => {
// ctor--构造器
return new ctor(hour,minute)
}
class DigitalClock implements Clockinterface{
constructor(h:number,m:number) {
console.log(h,m)
}
tick() {
console.log('beep beep')
}
}
class AnaClock implements Clockinterface {
constructor(h:number,m:number) {
console.log(h,m)
}
tick() {
console.log('tick beep')
}
}
const time1 = createClock(DigitalClock,12,13)
const time2 = createClock(AnaClock,3,23)
time1.tick()
time2.tick()