私が直面した問題3-TypeScriptコンパイルの問題


昨日TypeScriptを私のToyプロジェクトに導入しました.コードを書くこと自体は難しくありませんが、環境設定は本当に...犬に似ている.

tscコマンドを入力してコンパイル結果を返さない。



ここには、tsx拡張子を使用して作成されたtsコードを含むbook-appディレクトリがあります.
TypeScriptの正式なドキュメントに従って、tscコマンドを使用して現在のディレクトリから最上位ディレクトリまでtsconfigを行います.jsonを含むディレクトリ、tsconfigに移動します.json付きディレクトリが見つかった場合は、そのディレクトリをコンパイルします.
ではtsconfigjsonが存在するbook-appディレクトリでtscコマンドを使用すると、もちろんbook-appディレクトリのコンパイルが期待されます.でもだめです.

book-appはtsc commandを使用していますか?

相変わらずです.間違いでもない.そして昨日はtscコマンドでよくコンパイルされました.でも今日はこんな感じで楽しかったやれやれ

--プロジェクトオプションの使用

tsc --projectまたはtsc -pのオプションを使用して、tsconfigファイルを参照するディレクトリを設定します.では、tsc -p .を使用すると、tsconfigファイルは現在のディレクトリでのみナビゲートされます.

でもだめです.

ファイル名を直接入力


では、ファイル名を直接入力すればコンパイルできますか?

いいですよ.@types/react-nativeライブラリとの互換性エラーはいくつかありますが、よくコンパイルされています.
ここで私は「tsconfigファイルが間違っているのではないでしょうか」と言いました.という考えが生まれた.ファイル名を直接入力するコンパイルは、カスタムtsconfigではなくdefault tsconfigに従うためです.

default tsconfigの使用


既存のtsconfigを一時的に別の場所に置き,tsc --initでtsconfigを再生成した.
default tsconfigでは"jsx": "react", "noImplictAny": "false"程度しか修正されておらず、tscと入力されています…?

驚いたことに、すべてがよかった!ははは….ハハハ...今度はまた私がばかになったので,やっとかき回したのだ.

では、既存のtsconfigに何か問題がありますか?


既存のtsconfigのコードはこうです.
{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "jsx": "react",
    "strict": true,
    "noImplicitAny": false,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "noFallthroughCasesInSwitch": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "outDir": "dist"
  },
  "include": [
    "src/**/*"
  ]
}
よく考えてみると、このtsconfig設定はReact&Type Script開発環境設定記事からコピーされています.ここで問題が発生した設定は"noEmit": trueです.この設定がtrueの場合、コンパイルされたファイルは出力されません.「違う!どうしてそんな設定があるの?」と思います.
この設定はbabelなどのコンパイラが実際にコンパイルを担当し、Type Scriptはタイプチェックまたはタイプチェックの実行にのみ使用されるオプションです.
しかし、これをtrueに設定するのはなぜコンパイルしないのでしょうか.なぜjsファイルを生成できないのですか?このまま待っていて...私の不足はもう極点に達した.

の最後の部分


ネット上で勝手にconfigファイルをコピーして使用しないでください.configは詳細を表示して使用します.
幸いなことに、同じ間違いを二度と犯さないので、今度はもっと気をつけます...