Скомпилировать TypeScript с реактивным-native-TypeScript-трансформер? - PullRequest
4 голосов
/ 18 июня 2019

В Expo SDK 31 встроена поддержка TypeScript. Это здорово.

Однако, насколько я могу судить, он использует babel-typescript. Для моего проекта, работающего на Expo SDK 33, мне нужно использовать react-native-typescript-transformer. Это возможно? Как я могу настроить это изменение?

PS: причина, по которой мне нужно использовать react-native-typescript-transformer, заключается в том, что мне нужна поддержка пространств имен и перечислений TypeScript. Я использую swagger-codegen для генерации моего уровня клиента REST. Но все генераторы, которые я обнаружил, используют пространства имен (а также перечисления, которые не поддерживаются ни Babel 7, если я правильно понял).

1 Ответ

1 голос
/ 19 июня 2019

Наконец-то разобрался!

Всякий раз, когда вы собираете и запускаете свой проект React Native, запускается упаковщик под названием Metro. Упаковщик делает несколько вещей, в том числе: объединяет весь ваш код Javascript в один файл и переводит любой код Javascript, который не может понять ваше устройство - например, JSX и TypeScript (кредиты mahdi ).

Чтобы подключить и обойти babel-typescript с помощью react-native-typescript-transformer, просто создайте файл в корневом каталоге вашего проекта с именем metro.config.js. Вот конфиг:

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

Работает в Expo SDK 33 с TypeScript 3.4.5. Мне наконец удалось использовать swagger-codegen для генерации моего клиентского уровня REST! ​​

...