Я создал приложение TypeScript React, используя:
yarn create react-app my-app --template typescript
Таким образом, мой проект компилируется с Babel , а затем объединяется в webpack . Теперь я хочу использовать пространства имен TypeScript , которые по умолчанию не поддерживаются в Babel, но их можно включить . Я установил все необходимые пакеты:
В package.json
я изменил react-scripts start
на react-app-rewired start
.
Наконец, я создал файл config-overrides.js
:
const {
override,
addExternalBabelPlugin
} = require("customize-cra");
module.exports = override(
addExternalBabelPlugin([
"@babel/plugin-transform-typescript",
{ allowNamespaces: true }
])
);
Однако при компиляции все равно выдается синтаксическая ошибка, как если бы плагин не был включен:
SyntaxError: /home/m93a/my-app/script.ts: Пространство имен не помечено только для объявления типа , Не декларативные пространства имен поддерживаются только в Babel экспериментально. Чтобы включить и просмотреть предупреждения, см .: https://babeljs.io/docs/en/babel-plugin-transform-typescript
Как правильно настроить мой проект, чтобы он компилировал даже не декларативные пространства имен?
EDIT : Причина, по которой мой проект не работал, на самом деле сильно отличалась от того, что я думал. Проверьте мой собственный ответ для более подробной информации.