typescript - 使用 react-native-typescript-transformer 编译 TypeScript?
问题描述
自 Expo SDK 31 以来,集成了 TypeScript 支持。那太棒了。
但是,据我所知,它使用babel-typescript
. 对于我在 Expo SDK 33 上运行的项目,我需要react-native-typescript-transformer
改用它。这可能吗?如何配置此更改?
PS:我需要使用的原因react-native-typescript-transformer
是我需要对 TypeScript 命名空间和枚举的支持。我使用swagger-codegen来生成我的 REST 客户端层。但是我发现的所有生成器都使用命名空间(如果我理解得很好,还有 Babel 7 也不支持的枚举)。
解决方案
终于想通了!
每当您构建和运行 React Native 项目时,都会启动一个名为 Metro 的打包程序。打包器会做一些事情,包括:将所有 Javascript 代码合并到一个文件中,并翻译您的设备无法理解的任何 Javascript 代码 - 例如 JSX 和 TypeScript(感谢 mahdi)。
要连接并绕过babel-typescript
using,react-native-typescript-transformer
只需在项目根目录中创建一个名为metro.config.js
. 这是配置:
module.exports = {
transformer: {
babelTransformerPath: require.resolve(
'react-native-typescript-transformer',
),
},
};
适用于带有 TypeScript 3.4.5 的 Expo SDK 33。我终于设法swagger-codegen
用来生成我的 REST 客户端层!
推荐阅读
- javascript - 基于图像宽度的偏移 div
- python - 如何根据元素之间的重复子字符串删除字符串列表中的项目?
- ios - Testflight 如何在不触发完整审查的情况下更新构建?
- c# - 单击按钮时,有没有办法让文本框值显示在另一个文本框中?
- php - Laravel:在发布之前永久覆盖 Laravel 包中的依赖项配置
- python - 张量流损失:NaN;准确度:0.1
- r - 为什么我的下载按钮在闪亮的应用程序中激活两次?
- c++ - 为什么以以下方式将 ID 传递给线程是不好的?
- python - 如何使用 Python 正确使用 If 语句
- firebase - Firebase 托管和 Expo Web:如何将 Expo Web 构建部署到 Firebase 托管