在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();