打字稿:创建,保存和搜索对象的最佳方式

时间:2016-09-06 13:56:08

标签: angularjs angular typescript ionic-framework ionic2

我是打字稿的新手,想要创建一个存储对象。

对象应如下所示:

workoutResults: array { 
    workoutResult {
        dateOfWorkout: string
        rounds: array {
            sets:array {
                repeats: number;
                weight: number;
                duration: number;
            }
        }
    }
}

我想创建过去所有锻炼的历史记录,并希望在用户开始新锻炼时获得最新的锻炼结果。

我只是玩界面,但由于某种原因,这不起作用:

interface WorkoutResult {
    workoutDate: string;
    workoutSet: WorkoutSet;
}

interface WorkoutSet {
}

export class WorkoutDoPage {

    private workoutResults: Array<WorkoutResult>;

    constructor(private nav: NavController, private navParams: NavParams, public exerciseData: ExerciseData) {

        var testDate: any = new Date();

        this.workoutResults.push(testDate);

        console.log(this.workoutResults);

    }

}

引发错误:无法读取属性&#39;推送&#39;未定义的。

也许你可以帮助我一点点:)

在打字稿中存档这样的数据结构的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您必须在声明之后或在构造函数中初始化数组:

private workoutResults: Array<WorkoutResult> = [];

constructor(private nav: NavController, private navParams: NavParams, public exerciseData: ExerciseData) {

    var testDate: any = new Date();
    this.workoutResults = [];
    this.workoutResults.push(testDate);

    console.log(this.workoutResults);

}

对于子数组,您可以使用以下内容:

interface WorkoutSet {
  repeats: number;
  weight: number;
  duration: number;
}

interface WorkoutRounds {
  rounds: WorkoutSet[];
}

interface WorkoutResults {
  dateOfWorkout: string;
  rounds: WorkoutRounds[];
}
workoutResults: WorkoutResults[] = [];

然后将包含这些数据的完整对象推送到WorkoutResults数组中。