Kompilera TypeScript med react-native-typescript-transformer?


Sedan Expo SDK 31 finns det inbyggt stöd för TypeScript. Det är bra.

Men, såvitt jag kan se, använder det babel-typescript. För mitt projekt, som körs på Expo SDK 33, behöver jag istället använda react-native-typescript-transformer. Är detta möjligt? Hur kan jag konfigurera denna ändring?

PS: Anledningen till att jag behöver använda react-native-typescript-transformer är att jag behöver stöd för TypeScript-namnrymder och enum. Jag använder swagger-codegen för att generera mitt REST-klientlager. Men alla generatorer jag hittade använder namnrymder (och även enums som inte heller stöds av Babel 7 om jag förstått rätt).

Svar #1

Slutligen listade jag ut det!

När du bygger och kör ditt React Native-projekt startar en paketerare som heter Metro. Paketeraren gör några saker, inklusive: kombinerar all din Javascript-kod till en enda fil, och översätter all Javascript-kod som din enhet inte kommer att förstå - som JSX och TypeScript (kredit till mahdi).

För att koppla upp och kringgå babel-typescript med hjälp av react-native-typescript-transformer skapar du helt enkelt en fil i din projekts rotkatalog som heter metro.config.js. Här är konfigurationen:

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

Fungerar på Expo SDK 33 med TypeScript 3.4.5. Jag lyckades till slut använda swagger-codegen för att generera mitt REST-klientskikt!

Relaterade artiklar