我正在使用Typescript处理RN。通过使用official instruction 我设法添加.tsx和.ts文件,但是我遇到的主要问题是RN根本没有检测到文件中的错误类型。 例如。
在App.tsx的开头,我添加了错误的TS语句。
let a: number = 5;
a = "test"
当我将其添加到标准React应用(用于Web)时,TS编译器向我显示
“类型”“ test”不能分配给“数字”类型。 TS2322
但是当我对RN执行相同操作时,它只是编译而没有显示任何警告/错误等。 就像一切正常一样,只需在模拟器上启动该应用即可。
这是我第一次尝试将RN与Typescript一起使用。在我仅使用WEB应用程序+打字稿之前,为什么我想知道这种行为是否正确?在React native的情况下,如何启用类型检查?
P.S。我什至尝试了this one。相同的行为。
感谢您的帮助。
答案 0 :(得分:3)
我几乎整天都在寻找解决方案,而RN打字稿模板似乎不支持开箱即用的类型检查。 关于他们的官方文档use tsc command to check types,这意味着我们通常只应在提交之前检查类型,等等(可以通过诸如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"
}
警告。如果要复制粘贴此脚本,则需要安装concurrently软件包。
P.S。不幸的是,控制台中的错误警告没有颜色(红色等),因此可能让人讨厌,但是总之,它比在运行时根本不进行类型检查要好得多。
如果有人找到更正确的方法,请告诉我