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!
