反应本机打字稿。非工作类型检查

Vel*_*dan 5 typechecking typescript react-native

我正在使用 Typescript 开发 RN。通过使用官方指令, 我成功添加了 .tsx 和 .ts 文件,但我面临的主要问题是 RN 根本无法检测到文件中的错误类型。对于前。

在 App.tsx 的开头我添加了错误的 TS 语句。

let a: number = 5;
a = "test"
Run Code Online (Sandbox Code Playgroud)

当我将它添加到标准 React 应用程序(针对 Web)时,TS 编译器向我展示

类型“test”不可分配给类型“number”。TS2322

但是当我在 RN 中执行相同操作时,它只是编译并且没有显示任何警告/错误等。该应用程序只是在模拟器上启动,就像一切都很好一样。

这是我第一次尝试将 RN 与 Typescript 结合使用。之前我只使用 WEB 应用程序 + 打字稿,所以为什么我想知道这种行为是否正确?在 React Native 的情况下如何启用类型检查?

PS我什至尝试过这个。同样的行为。

谢谢你的帮助。

Vel*_*dan 6

我几乎花了一整天的时间来寻找解决方案,看起来 RN typescript 模板不支持开箱即用的类型检查。关于他们的官方文档使用 tsc 命令来检查类型,这意味着我们通常应该仅在提交之前检查类型等(可以通过一些预提交挂钩(例如 husky)来完成)

但正如我们可以使用的那样,我们也tsc可以使用watchMode

我使用了一种解决方法,将脚本添加到 package.json 中以运行tsc到监视模式,然后与标准的 React-Native 命令并行运行它以进行运行时类型检查。

// package.json
"scripts": {
    "android:ts-watch": "concurrently \"yarn check-types:watch\"  \"react-native run-android\"",
    "check-types": "tsc",
    "check-types:watch": "tsc --watch"
 }
Run Code Online (Sandbox Code Playgroud)

警告。如果您想复制粘贴此脚本,则需要同时安装包。

PS 不幸的是,控制台中的错误警告没有颜色(红色等),因此可能会令人讨厌,但无论如何,这比在运行时根本不进行类型检查要好得多。

如果有人找到更正确的方法,请告诉我