在typescript中创建类时是否存在未定义的奇怪情况?
我用在typescript中创建类时是否存在未定义的奇怪情况?,typescript,Typescript,我用new关键字实例化了一个新的object。DigitalClock和AnalogClock从基Clock类继承。之后,我从childclass中调用了console.logtick()函数。但是控制台显示未定义的和来自勾选()的结果。我怎么了 时钟.ts class Clock { h: number; m: number; constructor(h: number, m: number) { this.h = h; this.m
new
关键字实例化了一个新的object
。DigitalClock
和AnalogClock
从基Clock
类继承。之后,我从childclass
中调用了console.log
tick()
函数。但是控制台显示未定义的和来自勾选()
的结果。我怎么了
时钟.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}`);
}
}
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());
应用程序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}`);
}
}
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
这:
首先运行digital.tick
,它调用
console.log(`beep beep at ${this.h}: ${this.m}`)
它已经输出到控制台-你想要的哔哔声。但随后该函数返回到原始行,该行尝试向控制台发送来自digital.tick的返回值。由于没有这样的值,您将获得未定义的输出。只需调用函数,无需console.log
它们,因为您已经在函数中这样做了:
digital.tick();
analog.tick();
这:
首先运行digital.tick
,它调用
console.log(`beep beep at ${this.h}: ${this.m}`)
它已经输出到控制台-你想要的哔哔声。但随后该函数返回到原始行,该行尝试向控制台发送来自digital.tick的返回值。由于没有这样的值,您将获得未定义的输出。只需调用函数,无需console.log
它们,因为您已经在函数中这样做了:
digital.tick();
analog.tick();