t.budget.budgetGroup.name
在这里,上面有错误。我无法重新创建此错误。但是Sentry将其显示为运行时异常。这可能吗?由于我已经初始化new Budget()
和new BudgetGroup()
。那我该如何解决呢?
data: DtoBudgetGroup;
constructor(){}
init() {
this.data = this.navParams.get('data');
}
let filteredTransactions: Transaction[] = filter(this.data.transactions, (t:
Transaction) => { return t.budget.budgetGroup.name == this.data.budget.budgetGroup.name; });
export class Transaction {
id: string;
budget: Budget = new Budget();
}
export class Budget {
id: string;
budgetGroup: BudgetGroup = new BudgetGroup();
}
export class BudgetGroup {
id: string;
name: string;
}
export class DtoBudgetGroup {
budget: Budget;
budgetGroup: BudgetGroup;
budgetTotal: number;
transactionTotal: number;
transactions: Transaction[];
isTransactionOver: boolean = false;
}
this.data = this.navParams.get('data');
答案 0 :(得分:-2)
代码中的问题是,当您键入
class MyClass {
prop: stirng;
}
您仅声明一组属性及其类型。
但是,您不初始化它们。要初始化,您需要一个构造函数。
您有两种声明课堂道具的方法
export class BudgetGroup {
constructor(
public id?: string,
public name?: string
) {
}
}
和
export class BudgetGroup {
id: string;
name: string;
constructor(
id: string,
name: string
) {
this.id = id;
this.name = name;
}
}
您可以看到here
的示例没有属性初始化,因此调用new BudgetGroup
将导致空对象。要初始化它们,您应该在传递道具的地方使用构造函数,或者在类中声明这些道具的值。