【问题标题】:signature mismatch on observable.bindcallbackobservable.bindcallback 上的签名不匹配
【发布时间】:2017-05-14 01:27:41
【问题描述】:

我目前正在做一个 ionic2 应用程序。 所以有时我需要调用 facebook Accountkit.login(type, params, callbackFn); 我想做一个 Observable 回报; Following the docs我愿意:

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

似乎是打字稿问题,我找不到任何实用的解决方案。

【问题讨论】:

    标签: typescript ionic2 rxjs


    【解决方案1】:

    尝试投射bindCallback

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

    您当然必须将YourTypeOfType 替换为相应的类型(我猜是string?),TypeOfParamsTypeOfResponse 也是如此

    作为快速试用,您还可以对每个使用 any

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

    【讨论】:

    • 我永远不会找到这个!也许我应该了解有关打字稿的特定主题?
    • 通常“类型不匹配”或“签名不匹配”与框架提供的某些默认类型有关 - 在这种情况下,bindCallback 的默认类型假定您提供的方法有 1 个参数(login) - 在这种情况下,您必须明确声明正确的类型签名。然而,使用 Typescript 2.1,这应该会变得更容易,开发人员不必再担心这一点,因为编译器可以自动检测到这些类型,但是这可能需要一些时间才能实现到所有框架中。跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2014-02-09
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2019-03-28
    相关资源
    最近更新 更多