类型'number中不存在属性'getTime'日期'
class SW {
private startTime: number | Date
private endTime: number | Date
constructor() {
this.startTime = 0,
this.endTime = 0
}
start() {
this.startTime = new Date();
}
stop() {
this.endTime = new Date();
}
getDuration() {
const seconds = (this.endTime.getTime() - this.startTime.getTime()) / 1000;
}
}
现在我有这个错误: Property 'getTime' does not exist on type 'number | Date'.
基于此链接,我也尝试声明 Date 但没有奏效。
interface Date {
getTime(): number
}
任何想法将不胜感激。
回答
您的财产被声明为number | Date,这意味着它可以是。在您的构造函数中,它是一个数字。稍后,当您调用 时start,将其从 更改number为Date。在 中getDuration,TypeScript 无法知道它是什么(number或Date)。
从查看您的代码来看,您可能希望始终number通过使用Date.now()而不是new Date()然后不使用来使用getTime:
class SW {
private startTime: number;
private endTime: number;
constructor() {
this.startTime = 0,
this.endTime = 0
}
start() {
this.startTime = Date.now();
}
stop() {
this.endTime = Date.now();
}
getDuration() {
const seconds = (this.endTime - this.startTime) / 1000;
}
}
您也可以考虑getDuration抛出错误或返回NaNwhenthis.endTime或this.startTimeis 0。