我是打字稿新手。我在打字稿的官方网站上遇到过一个教程。
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);
不会传递任何对象。
请帮助我理解。
答案 0 :(得分:2)
接口是其他对象的描述。
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
ClockConstructor
描述了可以用new
运算符调用的可调用对象。 new
运算符可以调用哪种对象?一类。注意我不是在指类实例,而是指类本身。当我们要键入一个可以包含可以通过使用特定参数调用它来构建的类的变量时,这样的接口很有用。
createClock(DigitalClock, 12, 17);
将特定的类DigitalClock
传递给参数,该参数必须是带有接受指定参数的构造函数的类。