如何声明 Rx.Observable.fromPromise() 的 TypeScript 返回类型
Posted
技术标签:
【中文标题】如何声明 Rx.Observable.fromPromise() 的 TypeScript 返回类型【英文标题】:How to declare TypeScript return type of Rx.Observable.fromPromise() 【发布时间】:2017-06-20 00:02:18 【问题描述】:我有一个函数返回一个从承诺创建的Rx.Observable
,如下所示:
var data$ = fetchData();
fetchData()
return Rx.Observable.fromPromise(fetch("someUrl"));
在 Visual Studio Code 中,如果我将鼠标悬停在变量 data$
上,它会显示类型为 Observable<Response>
。但是,如果我明确声明函数返回类型,例如fetchData(): Rx.Observable<Response> ...
我得到一个错误:“找不到名称'响应'。”
它在将返回类型声明为Observable<any>
时有效,但这太笼统了。我应该如何声明函数返回类型以匹配Observable<Response>
的data$
类型?
【问题讨论】:
【参考方案1】:由于 fetch-api 仍处于试验阶段,根据您的 Typescript-Version,您可能无法提供 fetch-api 的所有类型 - 在这种情况下,您可以尝试从 npm 安装 @types/whatwg-fetch
-typings。
npm install @types/whatwg-fetch
你也可以在 github 上关注这个帖子以获取未来的更新:https://github.com/Microsoft/TypeScript/issues/4948
【讨论】:
抱歉,我应该提到这是一个 Node 项目,所以我使用的是node-fetch
,我确实安装了这些类型。要使用fetch
我有import fetch from "node-fetch";
似乎我可以做import * as Response from "../node_modules/node-fetch/lib/response";
但这似乎不正确(指定模块的完整路径),即使这样做我仍然得到“找不到名称'响应' 。”错误。
尝试npm install --save @types/node-fetch
并使用import Response from "node-fetch";
【参考方案2】:
您需要安装类型:
npm install --save @types/whatwg-fetch
【讨论】:
以上是关于如何声明 Rx.Observable.fromPromise() 的 TypeScript 返回类型的主要内容,如果未能解决你的问题,请参考以下文章