我正在尝试将新对象推送到我的Angular 2应用程序中的数组,但我遇到了一个问题(我怀疑可能是一个打字稿类型的问题,虽然我不确定)。这就是我推动的阵列:
locations = [
{ city: 'Los Angelas', postalCode: '90001', coordinates: 2321 },
{ city: 'New York', postalCode: '10001', coordinates: 3432 },
];
这是我用来将新的zipcodes推送到数组的函数:
addZipcode(event) {
this.locations.push({ postalCode: this.newPostalCode });
this.newPostalCode = '';
this.addZipInput = false;
event.preventDefault();
}
我得到的错误:此功能是:
类型的论证' {postalCode:any; }'不能分配给参数 类型' {city:string; postalCode:string;坐标:数量; }&#39 ;. 物业' city'缺少类型' {postalCode:any; }'
我该如何处理这个问题?用户将推送邮政编码,而不是城市或坐标。我认为我可以将任何类型的对象推送到数组中,但似乎打字稿阻止了这一点。
答案 0 :(得分:2)
TypeScript已将数组类型推断为{ city: string; postalCode: string; coordinates: number; }[]
,但您尝试推送{postalCode:string}
- 这是错误。如果您仍想执行此操作,则需要为location
设置适当的类型:
location:any[]
//or
interface ILocation {
city?:string;
postalCode?:string;
coordinates?:string;
}
location:ILocation[];
答案 1 :(得分:1)
您可以将locations
声明为具有可选city
和coordinates
的对象数组:
type Loc = {city?: string; postalCode: string; coordinates?: number};
let locations: Loc[] = [
{ city: 'Los Angelas', postalCode: '90001', coordinates: 2321 },
{ city: 'New York', postalCode: '10001', coordinates: 3432 },
];