2016-12-29 38 views
0

我目前正在執行一個ionic2應用程序。 因此,我需要調用facebook Accountkit.login(type,params,callbackFn); 我想做一個Observable return; Following the docs我做的:observable.bindcallback上的簽名不匹配

let obs = Observable.bindCallback(AccountKit.login); // it's ok ! 
    return obs(type, params)       // <---- error: signature mismatch 
     .map(response => this.loginCallback(response)); 

似乎是一個打字稿的問題,我找不到任何實際的解決方案。

回答

2

嘗試鑄造bindCallback

let obs = Observable.bindCallback<YourTypeOfType, YourTypeOfParams, YourTypeOfResponse>(AccountKit.login); 

當然,你必須與相應的類型(我猜string?),並與TypeOfParamsTypeOfResponse

同樣作爲一個快速試模,以取代YourTypeOfType你也可以使用any爲每個:

let obs = Observable.bindCallback<any, any, any>(AccountKit.login); 
+0

哇,非常感謝,th是完美的作品! – AnM

+0

我永遠不會找到這個!也許我應該學習關於打字稿的具體主題? – AnM

+0

「類型不匹配」或「簽名不匹配」通常與框架提供的某些默認類型相關 - 在這種情況下,「bindCallback」的默認類型假定您提供的方法('login')的1個參數 - in在這種情況下,您必須明確說明正確的類型簽名。 然而,使用Typescript 2.1,這應該會變得更容易,開發人員不必再擔心這一點,因爲編譯器可以自動檢測這些類型,但是它可能需要一些時間才能在所有框架中實現。 – olsn