Сначала я инициализировал реагирующее приложение с помощью create-react-app, а затем добавил к нему машинописный текст с помощью yarn add typescript @types/node @types/react @types/react-dom @types/jest
. Я инициализировал tsconfig.json со значениями по умолчанию:
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"allowJs": true,
"jsx": "react-jsx",
"sourceMap": true,
"outDir": "./dist",
"noEmit": true,
"isolatedModules": true,
"strict": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"noFallthroughCasesInSwitch": true,
"resolveJsonModule": true
},
"exclude": [
"node_modules",
"**/*.spec.ts"
],
"include": [
"./src/**/*.tsx"
]
}
Если я попытаюсь скомпилировать отдельные файлы, такие как tsc App.tsx
, я получаю сообщение об ошибке, говорящее, что мне нужно использовать флаг --jsx и флаг --esModuleInterop. Но я уже установил их в tsconfig.json, почему я должен явно указывать их в командной строке? Это работает только так: tsc index.tsx --jsx preserve --esModuleInterOp
Но почему?
npm run build
илиyarn build
для создания сборки React, и файл tsconfig будет автоматически использоваться (с помощью сценариев реагирования и веб-пакета) при сборке проекта. Вы хотите что-то еще, кроме этого? 13.05.2021noEmit
a> из файла tsconfig или установите для него значениеfalse
. 13.05.2021tsc
и она найдет и использует файл tsconfig. Или сделайтеtsc --project tsconfig.json
. 13.05.2021