gpt4 book ai didi

javascript - 初始化自定义类

转载 作者:行者123 更新时间:2023-11-28 18:10:05 25 4
gpt4 key购买 nike

最初,我有一个如下所示的函数

import { CustomDate } from './../models/customDate';

export class DateService {

datePickerResultToDate(date: Date) {

var myDate: CustomDate;

var month_str: string;

switch (date.getMonth()) {
case 0:
month_str = 'Jan';
break;
case 1:
month_str = 'Feb';
break;
// etc...
default:
month_str = 'Some Error';
}

myDate.day = date.getDate();
myDate.month = date.getMonth();
myDate.year = date.getFullYear();
myDate.customDateString = date.getDate().toString() + ' ' + month_str + ' ' + date.getFullYear().toString();

return myDate
}

}

哪里

export class CustomDate {
day: number;
month: number;
year: number;
customDateString: string;
}

执行后,我收到此错误

error_handler.js:54 EXCEPTION: Error in ./TimeSheetComponent class TimeSheetComponent - inline template:16:8 caused by: Cannot set property 'day' of undefined

所以我想我需要更改为

    var myDate: CustomDate = {
day: 0,
month: 0,
year: 0,
customDateString: ''
}

这样就解决了问题。我的问题是,每次我想使用 myDate 时初始化这些值似乎很奇怪。有没有办法简化这一点,以便当我想使用 myDate 时,它​​已经初始化并可以使用?还是我每次都必须这样做?

最佳答案

您收到该错误是因为您尚未初始化 CustomDate 类,您仅将 myDate 变量设置为 CustomDate 类型。相反,您应该实例化 CustomDate

的对象
var myDate: CustomDate = new CustomDate();

为了减少实例化类时的工作量,您可以将所有常见内容移至类内,但只需将 Date 对象传递给 CustomDate 构造函数即可。

export class CustomDate {
day;
month;
year;
customDateString: Date;
constructor(Date date) {
this.day = date.getDate();
this.month = date.getMonth();
this.year = date.getFullYear();
this.customDateString = date.getDate().toString() + ' ' + month_str + ' ' + date.getFullYear().toString();

}
}

然后执行如下操作。

var myDate: CustomDate = new CustomDate(date);

关于javascript - 初始化自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com