javascript - 初始化自定义类

标签 javascript angular typescript

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

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/

相关文章:

javascript - 使用 Typescript 在 Material-UI 中的 createMuiTheme 中将属性添加到背景 Prop

javascript - Sequelize 查询获取开始和结束日期之间的所有数据

javascript - 如何将字符发送到文本区域

javascript - 在 MongoDB 文本搜索中禁用停用词过滤

javascript - 如何在 Sails.js 0.11 中添加自定义 CSS 和 JS 文件?

javascript - JQuery计算量(带逗号)

angular - fromEvent 未获取键盘事件

javascript - 将 JSON 对象转换为 pretty-print 的 JSON 的 Angular 2 管道

TypeScript 找不到带有 index.d.ts 的节点模块

angular - 如何启用和禁用基于选择表单的垫按钮