我使用object
关键字实例了一个新的new
。DigitalClock
和AnalogClock
从基类Clock
继承。之后,我从console.log
tick()
childclass
开始运作。但是控制台显示undefined
,结果来自tick()
。我怎么了?
clock.ts
class Clock {
h: number;
m: number;
constructor(h: number, m: number) {
this.h = h;
this.m = m;
}
}
export class DigitalClock extends Clock {
constructor(h: number, m: number) {
super(h, m);
}
tick(): void {
console.log(`beep beep at ${this.h}: ${this.m}`);
}
}
export class AnalogClock extends Clock {
constructor(h: number, m: number) {
super(h, m);
}
tick(): void {
console.log(`tick tock at ${this.h}:${this.m}`);
}
}
app.ts
import { DigitalClock, AnalogClock } from "./clock";
const digital = new DigitalClock(1, 23);
const analog = new AnalogClock(2, 31);
console.log(digital.tick());
console.log(analog.tick());
控制台结果
beep beep at 1: 23
undefined
tick tock at 2:31
undefined
答案 0 :(得分:3)
此:
console.log(digital.tick());
首先运行digital.tick
,它会调用
console.log(`beep beep at ${this.h}: ${this.m}`)
已经输出到控制台的
-您想要的提示音。但是随后函数返回到原始行,该行尝试将digital.tick
的返回值发送到控制台。由于没有这样的值,因此您将获得undefined
输出。只需调用函数,也无需console.log
,因为您已经在函数中完成了此操作:
digital.tick();
analog.tick();