【发布时间】:2017-08-02 23:09:45
【问题描述】:
我正在浏览 typescript 的文档并找到了一个示例
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
interface ClockInterface {
tick();
}
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);
我了解了接口的所有概念,但我坚持在接口中使用 new 关键字和匿名对象声明
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
我不知道它背后的目的是什么以及它是如何工作的?我在https://www.typescriptlang.org/docs/handbook/interfaces.html找到它
有人可以帮我解决这个问题吗?
【问题讨论】:
-
声明本身并没有任何“匿名”。你能澄清一下你的意思吗?
-
我想问的是,这条线是什么意思——新的(小时:数字,分钟:数字):ClockInterface;
-
表示
new Clock(0,0)函数调用有效,假设Clock兼容ClockConstructor接口。
标签: typescript