Reactjs 为什么尽管存在TypeScript编译器错误,我的React本机应用程序还是成功构建?
我最近开始在Expo中使用TypeScript。我已经完成了所有linter/formatter集成,比如Reactjs 为什么尽管存在TypeScript编译器错误,我的React本机应用程序还是成功构建?,reactjs,typescript,react-native,expo,Reactjs,Typescript,React Native,Expo,我最近开始在Expo中使用TypeScript。我已经完成了所有linter/formatter集成,比如typescript eslint,因此我可以捕获编码过程中的大部分错误。为了检查代码是否编译,我每隔一段时间运行一次npx tsc,并进行相应的修复 有一件事我还没有完全理解,那就是为什么我的应用程序即使存在大量编译错误也能成功构建。我希望(并且更愿意)看到每个编译错误都出现红屏错误,而不是成功构建应用程序,然后让我稍后发现。比如说, function square<T>(x:
typescript eslint
,因此我可以捕获编码过程中的大部分错误。为了检查代码是否编译,我每隔一段时间运行一次npx tsc
,并进行相应的修复
有一件事我还没有完全理解,那就是为什么我的应用程序即使存在大量编译错误也能成功构建。我希望(并且更愿意)看到每个编译错误都出现红屏错误,而不是成功构建应用程序,然后让我稍后发现。比如说,
function square<T>(x: T): T {
console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
return x * x;
}
函数平方(x:T):T{
console.log(x.length);//错误TS2339:类型“T”上不存在属性“length”。
返回x*x;
}
是一个典型的TypeScript错误(我相信?)可以在编译时轻松检查。我希望它会导致一个大的红屏错误和构建失败
我对打字很陌生,所以我可能遗漏了一些非常重要的东西。究竟是什么原因导致了这种宽容?有没有办法强制执行更严格的检查?首先要了解的是,Typescript是Javascript的超集,在这种情况下,它实际上不会在编译期间接受类型检查 基本上,Babel只是去掉了Typescript并将其转换为Javascript,然后将其编译成js包 您可以查看以下Babel文档的第一行以及注意事项: 由于Babel不进行类型检查,因此语法正确但无法通过TypeScript类型检查的代码可能会成功转换,并且通常以意外或无效的方式转换 我建议您扩展build命令,首先包括
tsc
或者更确切地说是Typescript编译,并在tsconfig中将noEmit
设置为true
Update:我发现最近在向项目中添加jest
和typescript
时,这一点也适用于另一个实例。在笑话文档的底部,他们实际上陈述了同样的事情:
但是,在Babel中使用TypeScript有一些注意事项。因为Babel中的TypeScript支持是透明的,所以Jest不会在测试运行时进行类型检查。如果你想这样,你可以用ts笑话
这个问题的直截了当的答案是:巴贝尔,在编译之前去掉所有的打字标记。因此,您不会在cli中看到它出错。所说的“builds successfully”是指JS仍在输出,还是在某一点上没有显示编译器错误消息?我是指JS仍在输出,我可以在开发模式下运行应用程序,甚至可以无任何问题地构建生产应用程序。我希望TypeScript在编译时能够阻止这种情况。当我运行
npx tsc
时,总是会显示编译器错误消息,但我希望每个TypeScript错误都显示一个红色屏幕,就像我对正常JS错误(如const n=23)所做的那样;n、 反向()代码>结果显示一个红色屏幕,显示消息“n.reverse不是函数。(在'n.reverse()'中,'n.reverse'未定义)”我也觉得这很奇怪。我也找不到适当的解决办法。