1

例如,在:

const getLoc=新承诺(navigator.geologication.getCurrentPosition);

Typescript似乎推断出了类型承诺<职位>正确无误,但浏览器提供:

未处理的拒绝(TypeError):对未实现接口Geolocation的对象调用了“getCurrentPosition”。

如果我们将eta扩展到

const getLoc=新承诺((r,e)=>navigator.geologication.getCurrentPosition(r,e));

然后它就可以毫无问题地运行了,但这似乎不必要地冗长,并且会破坏类型推断(给出承诺<未知>而不需要手动注释)。所以我想了解实际发生了什么。

我怀疑这与但我不知道该搜索什么来找出答案。

我认为同样的事情也在发生这个问题,但没有对解决方案的解释。

2
  • 2
    promise构造函数调用传递的函数f();,所以导航员定位上下文丢失。 评论 2020年3月12日21:07
  • 2
    这个获取当前位置方法的实现中似乎包含对函数目标的期望。为了满足这个期望,函数的调用必须使其目标导航员定位。您可以使用绑定:const getLoc=导航器地理位置.getCurrentPosition.bind(navigator.geologication)。有一项建议可以改进此语法:const getLoc=::(navigator.geologication).getCurrentPosition(github.com/tc39/proposal-bind-operator公司) 评论 2020年3月12日21:51

0

重置为默认值