【发布时间】:2020-03-08 04:11:21
【问题描述】:
我是打字稿的新手。我在打字稿的官方网站上看到了一个教程。
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
interface ClockInterface {
tick(): void;
}
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);
我不明白是怎么回事
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
正在工作。
另外,这个类的函数名中的createClock(DigitalClock, 12, 17); 只是传递,没有传递任何对象。
请帮助我理解。
【问题讨论】:
-
“类名”实际上是一个构造函数。 createClock 调用它并返回创建的对象。
-
而
ClockConstructor是创建ClockInterface实例的构造函数的类型
标签: typescript oop interface typescript2.0