首页 > 解决方案 > 使用 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 也不支持的枚举)。

标签: typescriptreact-nativeexposwagger-codegen

解决方案


终于想通了!

每当您构建和运行 React Native 项目时,都会启动一个名为 Metro 的打包程序。打包器会做一些事情,包括:将所有 Javascript 代码合并到一个文件中,并翻译您的设备无法理解的任何 Javascript 代码 - 例如 JSX 和 TypeScript(感谢 mahdi)。

要连接并绕过babel-typescriptusing,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 客户端层!


推荐阅读