如何正确定义羽毛客户端的Typescript类型

时间:2019-09-08 11:42:00

标签: typescript feathersjs

我从羽毛4.3和Typescript 3.6开始,并有一个问题,如何为羽毛客户端(浏览器端)正确定义正确的Typescript类型。

我已经从https://github.com/feathersjs-ecosystem/feathers-chat-react中获取了反应聊天代码,并将其翻译为Typescript(大多是直接的)。

feathers.js中有一个客户端的定义:

const client = feathers()

client的类型被推断为Application<any>

当我尝试在客户端(authenticate)上致电application.js时出现问题:

client.authenticate().catch(() => this.setState({ login: null }))

打字稿告诉我TS2339: Property 'authenticate' does not exist on type 'Application<any>'

如果我将类型强制转换为any,则可以使用,但是我宁愿避免这种情况。

我想解决方案是将其实例化为 const client = feathers<MyApplicationType>() 而不是根本不传递类型参数?

在某处是否有文档说明Typescript类型应该是什么样子或应该如何构造?它是客户端上可用的不同服务类型的组合吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试npm install --save @feathersjs/authentication-client。我遇到了同样的TS错误,但是幸运的是,一旦我在docker容器中旋转了羽毛,我又遇到了一些其他类型错误,抱怨找不到模块@feathersjs/authentication-client@feathersjs/rest-client@feathersjs/primus-client。安装完这3个软件包后,Application类型中包含了authenticate和reAuthenticate。

不确定为什么要修复它,但是我认为@feathersjs/client软件包中存在一些错误的配置。