【问题标题】:Can I use third-party libraries with React and TypeScript?我可以在 React 和 TypeScript 中使用第三方库吗?
【发布时间】:2019-08-14 12:21:34
【问题描述】:

我正在尝试使用 React 设置一个新项目,并且正在考虑将 PropTypes 替换为 TypeScript。

但我想知道我是否会遇到集成问题。

例如:

  • 在 TypeScript + React 中使用 Redux(或 react-redux
  • 集成未使用 TypeScript 创建的组件的问题
  • react-bootstrap 等库的问题

我主要关心的是从 TypeScript 导入非 TypeScript 代码。

有这方面的线索或经验吗?

【问题讨论】:

  • 我们已经将 redux 和 react-bootstrap 与 react 和 typescript 一起使用,并且它们一起工作得非常好。对于 redux,我特别推荐这个:github.com/piotrwitek/typesafe-actions。使用用纯 JS 编写的 3rd 方组件对我们来说没有问题,特别是如果您有它们的类型定义(大多数都有),如以下关于 DefinitiveTyped 的答案之一所述。

标签: reactjs typescript redux react-bootstrap


【解决方案1】:

您可以在 Typescript 项目中导入 Javascript 库。不幸的是,我一直这样做。一些库具有社区类型的类型,您可以通过运行 npm i @types/mypackage --dev 来安装它们。

否则,您将不得不为包创建一个空的 TS 模块声明:

按照惯例,在您的 src 目录中的某处创建一个名为 mypackage.d.ts 的文件。 (我一般放在src/types/

mypackage.d.ts 应包含declare module "mypackage";

现在,您从 mypackage 导入的任何内容都将具有 any 类型。

【讨论】:

    【解决方案2】:

    你可以在 typescript 中使用 react redux,只需要安装 react-redux 类型:

    npm install @types/react-redux
    

    以及 react-bootstrap 的类型:

    npm install  @types/react-bootstrap
    

    FormControlButton 事件仍然存在一些问题!

    【讨论】:

      【解决方案3】:

      有一个名为DefinitelyTyped 的开源组织负责将类型添加到所有默认不是 TS 的库中。

      如果您使用react-redux,您可能希望以这种方式安装@types/react-redux

      npm install @types/react-redux --dev
      

      在 Github 中查看组织:

      https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-redux

      这只是一个示例,他们为不同的库提供了数百种类型的包。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 2022-01-15
        • 2018-09-10
        • 2013-09-14
        • 2017-11-12
        相关资源
        最近更新 更多