传参的问题
来源:3-12 接口 -类类型+继承接口+混合类型+接口继承类

qq_直皛_0
2020-01-08
interface ClockInterface {
tick()
}
interface ClockConstructor {
new(h:number,m: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('beep beep')
}
}
class AnalogClock implements ClockInterface {
constructor(h:number,m:number) {
}
tick() {
console.log('tick tock')
}
}
let digit = createClock(DigitalClock,12,17)
let analog = createClock(AnalogClock,7,32)
老师这个createClock第一个参数不是构造器接口么,为什么传入的是继承ClockInterface 的类,类型不会不一致么
写回答
1回答
-
ustbhuangyi
2020-01-08
不会呀,类实现了 ClockInterface 接口,其实是类实现了 tick 方法,而 DigitalClock 和 AnalogClock 本身的构造函数的类型都是匹配 ClockConstructor 接口定义的类型,所以它们可以当做 createClock 函数的参数传入。
00
相似问题