【发布时间】:2020-04-05 04:12:35
【问题描述】:
我从 Feathers 4.3 和 Typescript 3.6 开始,并且有一个问题,如何为 Feathers 客户端(浏览器端)正确定义正确的 Typescript 类型。
我已经从 https://github.com/feathersjs-ecosystem/feathers-chat-react 获取了反应聊天代码并将其翻译成 Typescript(这主要是直截了当的)。
feathers.js 中有客户端的定义:
const client = feathers()
client 的类型推断为Application<any>。
当我尝试在客户端 (application.js) 上调用 authenticate 时出现问题:
client.authenticate().catch(() => this.setState({ login: null }))
Typescript 告诉我TS2339: Property 'authenticate' does not exist on type 'Application<any>'
如果我将类型转换为any,它会起作用,但我宁愿避免这样做。
我猜解决方案是将其实例化为
const client = feathers<MyApplicationType>()
而不是根本不传递类型参数?
在某处是否有文档说明该 Typescript 类型应该是什么样子或应该如何构造?它是客户端上可用的不同服务类型的联合吗?
感谢您的帮助!
【问题讨论】:
-
@Joe 引用的问题询问如何在 Javascript 中进行身份验证。我的问题涉及为羽毛客户端构建 Typescript 类型以利用类型安全,我得到了身份验证和所有其他部分工作,只是没有类型安全。
-
您引用的存储库似乎已过时。它在 package.json 中引用的包已归档并移动到主应用程序中,它的工作方式不同
-
@CGundlach 我只从那里获取代码并将其移植到 TS。代码工作正常,只是类型让我头疼。是否还有另一个我可以查看的前端 TS 示例,但我还没有找到?
-
@TorstenUhlmann 仅供参考,Feathers 中的 v4 身份验证代码现在都是 Typescript 的原生代码,因此使用最新最好的与那个 repo 可能会对您有所帮助。但是有从 v3->v4 的迁移步骤,所以它不仅仅是即插即用。
标签: typescript feathersjs typescript-3.6