【问题标题】:Typescript: Best way to create, save and search ObjectsTypescript:创建、保存和搜索对象的最佳方式
【发布时间】:2017-01-14 00:29:54
【问题描述】:

我是 typescript 的新手,想创建一个存储对象。

对象应如下所示:

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);

    }

}

引发错误:无法读取未定义的属性“push”。

也许你能帮我一点忙:)

在 typescript 中归档这样的数据结构的最佳方法是什么?

【问题讨论】:

  • 我觉得你还需要为它实例化一个默认值?

标签: angularjs angular typescript ionic-framework ionic2


【解决方案1】:

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

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 数组中。

【讨论】:

  • 哦,这很简单。没见过。谢谢。您是否还知道如何在锻炼结果数组中为集合和重复创建“子数组”?
猜你喜欢
  • 2021-11-16
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 2010-10-12
  • 2018-07-27
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多