我是打字稿的新手,想要创建一个存储对象。
对象应如下所示:
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;未定义的。
也许你可以帮助我一点点:)
在打字稿中存档这样的数据结构的最佳方法是什么?
答案 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数组中。