[react]CRA-tsconfigを分析します.json


CRA + Typescript

npx create-react-app test-app --template typescript
CRA+Typescriptをインストールするときに何気なく通るtsconfig.json default設定の解釈を作成します.
// tsconfig.json 설정
{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": ["src"]
}

compilerOption


コンパイルプロセスに関するオプションtarget : string
コンパイルするECMAScriptバージョンの設定
ex)ES 3(基本)、ES 5、ES 6、ES 2015、ES 2016、ES 2017、ES 2018、ES 2019、ES 2020、ES 2021、ES 2022、ESNEXTlib : array
コンパイル時に使用するライブラリファイルのリストallowJs : boolean
Javascriptファイルのコンパイルを許可
  • falseに設定すると、jsファイルがコンパイルできないためエラーが発生します.
  • skipLibCheck : boolean
    宣言ファイル(.d.ts)のタイプチェックをスキップするかどうか
  • サードパーティ製ライブラリの宣言ファイルは、通常、タイプチェックが行われているため、タイプチェックを減らすことでコンパイル時間を短縮する方法
  • がある.esModuleInterop : boolean
    CommonJSとESモジュール間の相互運用を許可するかどうか
    /*
    test 모듈이 CommonJS 문법으로 export 되었다고 가정
    */
    
    import test from "test"; // ❌, import 호환이 안 됨
    import * as test from "test";
    test();
    allowSyntheticDefaultImports : boolean
    default exportがimportを許可するかどうか
  • esModuleInterop:True自動allowSyntheticDefaultImport:True設定
  • strict : boolean
    すべての厳格なタイプの検証オプションを有効にするかどうか
  • を無条件にtrueに設定することを推奨します.そうでなければTypescriptを使用すると意味がなくなります
  • forceConsistentCasingInFileNames : boolean
    使用するファイルの名前を正しく付けるかどうか
    大文字と小文字noFallthroughCasesInSwitch : boolean
    switch文でFallthrough Caseが見つかった場合、エラーは発生しませんか?
  • は、空でない場合に文から中断または戻り、エラー
  • を予防することができる.module : string
    使用するモジュールシステムの設定
    ex) None, ES6, ES2015, ES2020, ES2022, ESNEXT, AMD, CommonJS, Node12, NodeNext, System, UMD
  • target:ES 3またはES 5の場合=>CommonJS
  • target:ES 6以上=>ES 6/ES 2015
  • モジュールResolutionのデフォルト値
  • を決定moduleResolution : string
    モジュール分析方法の設定
    ex) node, classic
  • 11.6以前のTypescriptバージョンで使用された方法でモジュール解析を行うには、古典的な
  • を使用します.
  • Node.js方式でモジュール解析を行うにはnode
  • を使用します.resolveJsonModule : boolean
    拡張子は.jsonのモジュールとしてインポートを許可するかどうかisolatedModules : boolean
    すべてのファイルをモジュール化するかどうか
  • exportファイルがモジュールであることを認識noEmit : boolean
    Typescriptを単純なタイプチェックに使用するかどうかjsx : string
    JSXコードのコンパイル方法の設定
    ex) react, react-jsx, react-jsxdev, preserve, react-native

    include


    Typescriptコンパイルターゲットに含めるファイルのリスト
    // tsconfig.json 주석 버전
    {
      "compilerOptions": {
        "target": "es5", // 컴파일할 ECMAScript 버전 설정
        "lib": ["dom", "dom.iterable", "esnext"], // 컴파일 과정에서 사용될 라이브러리 파일 목록
        "allowJs": true, // Javascript 파일 컴파일 허용 여부
        "skipLibCheck": true, // 선언 파일(.d.ts)의 타입 확인 생략 유무
        "esModuleInterop": true, // CommonJS와 ES Modules 간의 상호 운용성이 생기게 할 지 여부
        "allowSyntheticDefaultImports": true, // default export가 없어도 import가 가능하게 할 지 여부
        "strict": true, // 모든 엄격한 타입 확인 옵션 활성화 여부
        "forceConsistentCasingInFileNames": true, // 사용할 파일의 이름을 정확하게 작성 여부
        "noFallthroughCasesInSwitch": true, // switch 문에서 Fallthrough Case가 발견되면 에러를 발생 여부
        "module": "esnext", // 사용될 모듈 시스템 설정
        "moduleResolution": "node", // 모듈 해석 방법 설정
        "resolveJsonModule": true, // 확장자가 .json인 모듈의 import 허용 여부
        "isolatedModules": true, // 모든 파일을 모듈화하여 작성할 것인지에 대한 여부
        "noEmit": true, // Typescript를 단순 타입 확인용으로 사용할지에 대한 여부
        "jsx": "react-jsx" // JSX 코드를 어떻게 컴파일할지 설정
      }, // 컴파일 과정에 관련된 옵션
      "include": ["src"] // Typescript 컴파일 대상에 포함하고 싶은 파일들의 목록
    }

    ソース


    詳細
  • tsconfigプロパティ:https://it-eldorado.tistory.com/1282
  • 🖐 変なところや間違ったところがあればいつでも下記のコメントに書いてください