我有一個物件,我想向該物件添加一個鍵值對,而不是在物件宣告中宣告它。我嘗試了下面的代碼,但它給了我這樣的錯誤。
型別上不存在屬性“專業”
saveFormData(value: any) {
const saveData = {
userPartyRoleId : Number(this.userPartyRoleId),
notes : thihis.notes,
};
saveData.speciality = this.spec;
}
uj5u.com熱心網友回復:
這是一個 TypeScript 功能。當你saveData用一個值初始化時,TypeScript 會隱式推斷它saveData必須只有兩個屬性:userPartyRoleId, notes,沒有別的。
為了解決這個問題,你有幾個我能想到的選擇。
解決方案 1
最直接的解決方案。只需speciality在初始化時包含saveData. 這會為saveData.
const saveData = {
userPartyRoleId: Number(this.userPartyRoleId),
notes: this.notes,
speciality: this.spec
};
解決方案 2
如評論中所述,您可以使用擴展運算子。它將創建一個具有正確型別的新物件,您需要將其分配給不同的變數。
const saveData = {
userPartyRoleId: Number(this.userPartyRoleId),
notes: this.notes
};
const processedData = {
...saveData,
speciality: this.spec
};
解決方案 3
從某種意義上說,這是一個解決方案,它將使您的代碼編譯時不會出錯,并且希望運行時不會產生更多錯誤。你可以使用any型別告訴 TypeScript 不要進行型別檢查saveData。
const saveData: any = {
userPartyRoleId: Number(this.userPartyRoleId),
notes: this.notes
};
saveData.speciality = this.spec;
使用此解決方案,您將失去 TypeScript 的嚴格型別功能,這首先是 TypeScript 的重點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/431113.html
