2017-06-02 154 views
0

我有一個非常簡單的類,如:類型錯誤:不是一個函數打字稿

export class Party { 
    constructor(
     public id:Identifier, 
     public partyName: PartyName, 
     public person:Person 
    ) { } 

    copy():Party { 
     let copyParty = new Party(this.id, null, null); 
     return copyParty; 
    } 
} 

我想在另一個類(具體服務)使用拷貝功能(或方法?)導入這個類,如:

... (party => { 
let copyParty:Party = party.copy(); 
... 

,但我得到以下異常:

EXCEPTION: Uncaught (in promise): TypeError: party.copy is not a function 

我試過let copyParty:Party = Function.call(party.copy, copy)(有一些例外)以及let copyParty:Party = party.copy;(返回函數定義,而不是複製的對象)。

我在這裏錯過了什麼? 謝謝。

+3

我的猜測是,'party'你,是不是實例化'Party'對象。它從何而來? – PierreDuc

+0

如果你輸入你的參數'(party:Party =>)'它將幫助你追蹤爲什麼一個party對象沒有被傳入。 –

+0

@PierreDuc'party'實例通過'.then(res => res.json()作爲Party [])[0])的一個REST調用塊 – suat

回答

5

您不能使用類型提示作爲實際將對象轉換爲某種類型。它只是用來保持編譯器的快樂,並且你的代碼可讀。

實際上,你應該在REST調用後實例化對象:

.then(res => res.json().map(party => new Party(party.id, party.partyName, party.person))[0] 

這樣,你得到一個對象,它具有copy方法

相關問題