【发布时间】:2019-08-27 05:59:44
【问题描述】:
我想更改对象填充属性的方式。
目前我有
export interface INewOffer {
employment?: IEmployment;
heightWeight?: IHeightWeight;
}
export interface IEmployment{
trainings?: string;
activeEmployment?: string;
wage?: string;
}
创建对象的函数如下所示:
private dataGenerator(newCustomer: INewCustomer): INewOffer {
const data: INewOffer = {};
if (NullCheck.isDefinedOrNonNull(newCustomer.age)) {
data.employment = {
trainings: newCustomer.trainings,
activeEmployment: newCustomer.activeEmployment,
wage: newCustomer.wage,
};
} else {
data.employment = {
wage: newCustomer.wage,
};
}
data.heightWeight = {
height: '180',
weight: '75',
};
return data;
}
我已尝试将我的代码更改为
private dataGenerator(newCustomer: INewCustomer): INewOffer {
const data: INewOffer = {};
if (NullCheck.isDefinedOrNonNull(newCustomer.age)) {
data.employment.trainings = newCustomer.trainings;
data.employment.activeEmployment = newCustomer.activeEmployment;
data.employment.wage = newCustomer.wage
} else {
data.employment.wage = newCustomer.wage
}
data.heightWeight.height = '180';
data.heightWeight.weight = '75';
return data;
}
VS 代码 IDE 看不到任何问题,例如:当我将鼠标悬停在:
data.上面写着const data: INewOfferemployment.=>(property) INewOffer.employment?: IEmploymentwage=>(property) IEmployment.wage?: string
但是当我运行测试时出现错误:
E/launcher - Error: TypeError: Cannot set property 'wage' of undefined
我尝试将其设置为:
data.employment!.wage = newCustomer.wage
但它不起作用。然后我发现 typescript 不支持 Optional Chaining。
我的问题是,为什么 IDE 没有说它是一个错误?还是我必须做些其他事情才能让它发挥作用?
【问题讨论】:
标签: typescript visual-studio-code protractor