【问题标题】:How to properly define the Typescript type of the feathers client如何正确定义羽毛客户端的 Typescript 类型
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2018-08-22
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2018-07-11
    • 2011-10-24
    相关资源
    最近更新 更多