gpt4 book ai didi

reactjs - 尽管 TypeScript 编译器出现错误,为什么我的 React Native 应用程序仍能成功构建?

转载 作者:行者123 更新时间:2023-12-03 13:14:49 24 4
gpt4 key购买 nike

我最近开始在 Expo 中使用 TypeScript。我已经完成了所有 linter/formatter 集成,例如 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;
}

是一个典型的 TypeScript 错误(我相信?),可以在编译时轻松检查。我希望它会导致大红屏错误并且构建失败。

我对 TypeScript 还很陌生,所以我可能错过了一些非常重要的东西。究竟是什么导致了这种宽大处理?是否有办法实现更严格的检查?

最佳答案

首先要了解的是,Typescript 是 Javascript 的超集,在这种情况下,它实际上在编译期间不会进行类型检查。

本质上,Babel 只是剥离 Typescript 并将其转换为 Javascript,然后将其编译到 js 包中。

您可以查看以下 Babel 文档的第一行以及警告: https://babeljs.io/docs/en/next/babel-plugin-transform-typescript

Since Babel does not type-check, code which is syntactically correct, but would fail the TypeScript type-checking may successfully get transformed, and often in unexpected or invalid ways.

我建议扩展你的构建命令,首先包含 tsc 或者 Typescript 编译,并在 tsconfig 中将 noEmit 设置为 true。

更新:我最近在向项目添加 jesttypescript 时发现了另一个适用于此的实例。在 Jest 文档的底部,他们实际上声明了同样的事情:

https://jestjs.io/docs/en/getting-started#using-typescript

However, there are some caveats to using TypeScript with Babel. Because TypeScript support in Babel is transpilation, Jest will not type-check your tests as they are run. If you want that, you can use ts-jest.

关于reactjs - 尽管 TypeScript 编译器出现错误,为什么我的 React Native 应用程序仍能成功构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com