如何在 Typescript 中使用 React Native?

Isa*_*ira 1 typescript react-native

我读过 React Native 支持 Typescript 而没有像react-native- typescript -transformer这样的依赖项。如何使用Typescript将其配置为编码?

Mat*_*adu 6

自 0.57.0

随着升级到 Babel v7,Typescript 得到支持,但您仍然需要对您的应用程序进行一些更改:

  • 安装类型定义依赖项 @types/jest @types/react @types/react-native @types/react-test-renderer
  • .js文件更改为.ts.tsx取决于此类文件是否包含 JSX。注意:保持index.js原样,否则 Metro builder 将失败,因为它仍然没有更新以期待.ts入口文件。
  • 您需要为 Typescript 的图像、视频和 json 文件等二进制资产添加模块声明,以了解如何导入它们(示例在这里)。
  • 为了进行测试,必须通过将以下内容添加到 Jest 中的配置部分来使 Jest 了解 Typescript package.json

    "jest": {
      "preset": "react-native",
      "moduleFileExtensions": [
        "ts",
        "tsx",
        "js"
      ],
      "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$"
    }
    
    Run Code Online (Sandbox Code Playgroud)

请注意,使用此设置 Babel 只是将 Typescript 转换为 Javascript,它不会执行类型检查。

此外,预计可能会出现问题,因为它是第一个支持 Typescript 的 React Native 版本。我的建议是仍然遵循以下说明,直到事情随着时间和补丁稳定下来。

0.57.0 之前

React Native 不提供第一方 Typescript 支持。相反,如果您想要类型而无需添加额外的依赖项(当然除外),它会提供开箱即用的Flow支持flow-bin

如果您一定需要 Typescript,则需要以一种或另一种方式添加一些依赖项,具体取决于您最终选择使用的设置。有一篇 React Native 博客文章Using Typescript with React Native解释了一种添加 Typescript 的方法。

  • `Typescript 在 0.57 中默认支持。不需要转换器。` https://github.com/ds300/react-native-typescript-transformer/issues/77#issuecomment-421318966 (3认同)