使用 react-native-typescript-transformer 编译 TypeScript?

Compile TypeScript with react-native-typescript-transformer?

自 Expo SDK 31 以来,集成了 TypeScript 支持。太棒了

然而,据我所知,它使用 babel-typescript。对于我的项目 运行 on 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).

要使用 react-native-typescript-transformer 连接并绕过 babel-typescript,只需在项目根目录中创建一个名为 metro.config.js 的文件即可。这是配置:

module.exports = {
    transformer: {
        babelTransformerPath: require.resolve(
            'react-native-typescript-transformer',
        ),
    },
};

适用于带有 TypeScript 3.4.5 的 Expo SDK 33。我终于成功地使用 swagger-codegen 生成了我的 REST 客户端层!