我試圖從一個物體在我的反應狀態打字稿不是類型轉換
//currentUser is of type User
this.state.currentUser.rankUp()
調用一個函數,但它只是給出了一個錯誤this.state.currentUser.rankUp is not a function
。如果我創建了一個新的用戶對象,但它確實讓我調用了所說的函數。即使我嘗試將它作爲用戶投射:var user:User = this.state.currentUser as User
然後調用該函數,它會給出相同的錯誤。鑄造它時,它會返回作爲對象沒有用戶
我已經成功地得到它的工作至今感覺就像它的不正確,即使它的工作的唯一辦法是user.rankUp = (new User("a")).rankUp;
我試圖打印類型,均勻。
編輯:
User.rankUp定義爲:
rankUp(){
this.rank +=1;
}
應該是this.state.currentUser.rankUp,()表示它是一個函數隊友。 – TGarrett
'作爲'是一個提示,而不是一個轉換,它只是告訴TS你知道值的類型是什麼(在這種情況下,你錯了)。您所擁有的解決方案几乎是正確的,TypeScript不會將通用對象(例如來自JSON)轉換爲實例,而無需將其更新。但是你不必修補一件事,試試'user = new User(user.whatever);'而不是。 – jonrsharpe
那麼,如何定義'rankUp'? – Amy