【发布时间】:2020-11-17 14:42:21
【问题描述】:
这个例子来自docs
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);
正如文档所说:
因为 createClock 的第一个参数是 ClockConstructor 类型,所以在 createClock(AnalogClock, 7, 32) 中,它会检查 AnalogClock 的构造函数签名是否正确。
我想知道没有构造函数没有任何限制,所以如果我像下面这样更改AnalogClock 类,Typescript 不会给我任何错误。
class AnalogClock implements ClockInterface {
// constructor(h: number, m: number) {} <-- this like commented out.
tick() {
console.log("tick tock");
}
}
【问题讨论】:
-
如果您不提供自己的构造函数,那么将为您提供默认构造函数developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: typescript interface