Typescript:更新一个类属性会自动导致另一个类属性更新

Typescript:更新一个类属性会自动导致另一个类属性更新,typescript,Typescript,我已经找过这个了,但很难找到任何地方来解释如何做到这一点 我有一门课: export class CalendarLayout { private displayedColumns: number; private displayedHours: number; private calendarStartDatePosition: moment.Moment; private dayDifference: number; constructor(

我已经找过这个了,但很难找到任何地方来解释如何做到这一点

我有一门课:

export class CalendarLayout {
   private displayedColumns: number;
   private displayedHours: number;
   private calendarStartDatePosition: moment.Moment;
   private dayDifference: number;


   constructor(
            displayedColumns: number,
            displayedHours: number,
            calendarStartDatePosition: moment.Moment,
            dayDifference: number
           ) {
    this.displayedColumns = displayedColumns;
    this.displayedHours = displayedHours;
    this.calendarStartDatePosition = calendarStartDatePosition;
    this.dayDifference = dayDifference;
}
}

实际上,我希望dayDifference是一个基于calendarStartDatePosition的计算值

dayDifference = this.calendarStartDatePosition.diff(moment(), 'days');
我尝试过使用getter和setter,但都没有用。此外,编译器抱怨没有收到dayDifference的值


在我的例子“dayDifference”中,类的属性是如何从其他属性中计算出来的?此外,如果我更新calendarStartDatePosition属性,dayDifference属性将自动更新。

我在您提供的代码中添加了一些注释:

导出类日历布局{
私有显示列:编号;
私人显示小时数:数字;
私人日历开始日期位置:时刻。时刻;
//私人日差:数字;
//我们可以定义一个getter(像以前一样私有)。
//这将*自动*计算相关值
//当被询问时(通过'this.dayDifference',没有方法调用)。
私人获取日差(){
返回此.calendarStartDatePosition.diff(矩(),'days');
}
建造师(
displayedColumns:number,
显示小时数:,
calendarStartDatePosition:时刻,时刻,
//日差:数字//自动计算
) {
this.displayedColumns=displayedColumns;
this.displayedhurs=displayedhurs;
this.calendarStartDatePosition=calendarStartDatePosition;
//我们不再需要设置它,因为我们正在根据需要计算它。
//this.dayDifference=dayDifference;
}
}

我不熟悉Moment.js,但您可能需要一个全局对象,可以从中获取当前时间;我相信当前的代码在每次调用时都会创建一个新实例。

您想从它的声音中定义一个getter。不确定您是如何做到这一点的。
get dayDifference(){/*计算值的代码*/}
就足够了。只需定义一个getter(如我链接的那样)。这就是属性。顺便说一下,鉴于这不是TypeScript特有的,JavaScript标记在这里就足够了。