2017-02-15 36 views
0

我想將新對象推送到Angular 2應用程序中的數組,但我遇到了一個問題(我懷疑可能是一個Typescript類型的問題,儘管我是不確定)。這是我推到看起來像數組:函數中的Typescript錯誤將對象推入數組

locations = [ 
    { city: 'Los Angelas', postalCode: '90001', coordinates: 2321 }, 
    { city: 'New York', postalCode: '10001', coordinates: 3432 }, 
]; 

這裏是我使用推新拉鍊碼與陣列功能:

addZipcode(event) { 
    this.locations.push({ postalCode: this.newPostalCode }); 
    this.newPostalCode = ''; 
    this.addZipInput = false; 
    event.preventDefault(); 
    } 

的錯誤我得到re:這個函數是:

類型'{postalCode:any; }'不能分配給類型爲'{city:string;'的參數 。 postalCode:string;座標:數字; }」。 類型'{postalCode:any; }」。

我該如何處理這個問題?用戶將推送郵政編碼,而不是城市或座標。我想我可以推動任何類型的對象到數組中,但似乎typecript正在阻止這種情況。

回答

2

打字稿已經推斷出數組類型{ city: string; postalCode: string; coordinates: number; }[],而是你正試圖推動{postalCode:string} - 這是錯誤。如果您仍然想這樣做,那麼就需要設置相應的類型location

location:any[] 
    //or 
    interface ILocation { 
    city?:string; 
    postalCode?:string; 
    coordinates?:string; 
    } 
    location:ILocation[]; 
1

你可以聲明locations爲對象的數組可選citycoordinates

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 }, 
];