#tsconfig.json

導入

tsconfig.json は TypeScript プロジェクトの設定ファイルで、プロジェクトのルート ディレクトリに配置されます。一方、ディレクトリに tsconfig.json がある場合、TypeScript はそれをプロジェクトのルート ディレクトリと見なします。

プロジェクトのソース コードが JavaScript であるが、それを処理するために TypeScript を使用したい場合、構成ファイルの名前は jsconfig.json となり、tsconfig と同じように記述されます。

tsconfig.json ファイルは主に tsc コンパイラによって使用され、そのコマンド ライン パラメータ --project または -ptsconfig.json の場所 (ディレクトリまたはファイル) を指定できます。

$ tsc -p ./dir

設定ファイルの場所が指定されていない場合、tsc は現在のディレクトリで tsconfig.json ファイルを検索します。存在しない場合は、見つかるまで上位のディレクトリ内を検索します。

tsconfig.json ファイルの形式は JSON オブジェクトです。最も単純な場合は、空のオブジェクト {} を配置するだけです。ここに例を示します。

{
  "コンパイラーオプション": {
    "outDir": "./built",
    "allowJs": true"ターゲット": "es5"
  }"インクルード": ["./src/**/*"]
}

この章の後半で、「tsconfig.json」の各属性について詳しく説明します。上記の例の 4 つの属性の意味を簡単に説明します。

  • include: コンパイルする必要があるファイルを指定します。 ・allowJs:ソースディレクトリ内のJavaScriptファイルをコンパイル済みディレクトリにそのままコピーするかどうかを指定します。
  • outDir: コンパイル済みの製品が格納されるディレクトリを指定します。
  • target: コンパイルされた製品の JS バージョンを指定します。

「tsconfig.json」ファイルは手動で記述する必要はありません。tsc コマンドの「--init」パラメータを使用して自動的に生成されます。

$ tsc --init

上記のコマンドによって生成された tsconfig.json ファイルには、いくつかのデフォルト設定が含まれています。

他の人が事前に作成した tsconfig.json ファイルを使用することもできます。npm の @tsconfig 名前空間には多くのモジュールがあり、それらはすべて事前に作成された tsconfig.json サンプルです (@tsconfig/recommended@)。 tsconfig /node16

これらのモジュールはインストールする必要があります。例として「@tsconfig/deno」を取り上げます。

$ npm install --save-dev @tsconfig/deno
# または
$yarn add --dev @tsconfig/deno

インストール後、このモジュールを tsconfig.json で参照できます。これは、設定を継承して拡張することと同じです。

{
  "extends": "@tsconfig/deno/tsconfig.json"
}

@tsconfig スペースに含まれる完全な tsconfig ファイル ディレクトリは、GitHub で参照できます。

tsconfig.json には第 1 レベルのプロパティはあまりなく、ほんの数個しかありませんが、compilerOptions プロパティには多くの第 2 レベルのプロパティがあります。以下では、最初に第 1 レベルのプロパティを 1 つずつ紹介し、次に compilerOptions の第 2 レベルのプロパティを最初の文字でソートして紹介します。

除外する

exclude 属性は配列であり、指定されたファイルをコンパイル リストから削除するには、include 属性と一緒に使用する必要があります。また、「include」属性と同じワイルドカードの使用もサポートしています。

{
  "含む": ["**/*"]、
  "除外": ["**/*.spec.ts"]
}

拡張します

tsconfig.json は、別の tsconfig.json ファイルの設定を継承できます。プロジェクトに複数の構成がある場合、共通の構成を tsconfig.base.json として記述することができ、他の構成ファイルはこのファイルを継承するため、メンテナンスと変更が容易になります。

extends 属性は、継承する設定ファイルを指定するために使用されます。ローカル ファイルにすることもできます。

{
  "extends": "../tsconfig.base.json"
}

extends 属性で指定されたパスが ./ または ../ で始まらない場合、コンパイラは node_modules ディレクトリで指定された設定ファイルを検索します。

「extends」属性は、公開された npm モジュールの tsconfig ファイルを継承することもできます。

{
  "extends": "@tsconfig/node12/tsconfig.json"
}

extends で指定された tsconfig.json が最初にロードされ、次に現在の tsconfig.json がロードされます。 2 つの属性に同じ名前の属性がある場合、後者が前者を上書きします。

ファイル

files 属性は、コンパイルされたファイルのリストを指定します。ファイルの 1 つが存在しない場合、エラーが報告されます。

これは配列であり、最初にリストされたファイルが最初にコンパイルされます。

{
  "ファイル": ["a.ts", "b.ts"]
}

この属性はファイルを 1 つずつリストする必要があり、ファイルの照合はサポートされていません。ファイルが多数ある場合は、「include」属性と「exclude」属性を使用することをお勧めします。

##含む

include 属性はコンパイルするファイルのリストを指定し、ファイルを 1 つずつリストすることとワイルドカード文字の両方をサポートします。ファイルの場所は、現在の構成ファイルを基準とした相対的な場所です。

{
  "インクルード": ["src/**/*", "tests/**/*"]
}

「include」属性は 3 つのワイルドカード文字をサポートします。

  • ?: 単一の文字を指します
  • *: パス区切り文字を除く任意の文字を指します
  • **: 任意のディレクトリレベルを指定します。

ファイル拡張子が指定されていない場合、デフォルトで .ts.tsx、および .d.ts ファイルが含まれます。 「allowJs」がオンになっている場合は、「.js」と「.jsx」も含まれます。

参照

「references」属性は配列であり、配列メンバーはオブジェクトです。これは、参照する必要がある基礎となるプロジェクトを設定するために使用されます。

{
  「参照」: [
    { "パス": "../pkg1" },
    { "パス": "../pkg2/tsconfig.json" }
  ]
}

references 配列メンバー オブジェクトの path 属性は、ファイル tsconfig.json を含むディレクトリまたはファイルを直接指定できます。

同時に、参照される基礎となるプロジェクトの tsconfig.jsoncomposite プロパティを有効にする必要があります。

{
  "コンパイラーオプション": {
    「複合」: true
  }
}

コンパイラオプション

compilerOptions 属性は、コンパイル動作をカスタマイズするために使用されます。この属性は省略できます。その場合、コンパイラはデフォルト設定を使用します。

###allowJs

allowJs を使用すると、TypeScript プロジェクトが JS スクリプトを読み込むことができます。コンパイル時に、JS ファイルも出力ディレクトリにコピーされます。

{
  "コンパイラーオプション": {
    "allowJs": true
  }
}

常に厳格

alwaysStrict は、スクリプトが ECMAScript strict モードで解析されることを保証するため、スクリプト ヘッダーに "use strict" を記述する必要はありません。その値はブール値で、デフォルトは「true」です。

###allowSyntheticDefaultImports

allowSyntheticDefaultImports を使用すると、デフォルトで import コマンドが default 出力なしでモジュールをロードできるようになります。

たとえば、この設定をオンにすると、「import * as React from "react";」の代わりに「import React from "react";」と書くことができます。

到達不能コードを許可する

allowUnreachableCode は、実行不可能なコードを許可するかどうかを設定します。可能な値は 3 つあります。

  • unknown: デフォルト値。エディターは警告を表示します。
  • true: 実行できないコードを無視します。
  • false: コンパイラはエラーを報告します。

allowedUnusedLabels

allowUnusedLabelsは、未使用のコードラベル(ラベル)を許可するかどうかを設定します。可能な値は 3 つあります。

  • unknown: デフォルト値。エディターは警告を表示します。
  • true: 未使用のコードタグを無視します。
  • false: コンパイラはエラーを報告します。

ベース URL

baseUrl の値は、TypeScript プロジェクトのベース ディレクトリを指定する文字列です。

tsconfig.json の場所はデフォルトでベース ディレクトリとして使用されるため、通常はこの属性を使用する必要はありません。

{
  "コンパイラーオプション": {
    "baseUrl": "./"
  }
}

上記の例では、baseUrl は現在のディレクトリ ./ です。次に、次のステートメントに遭遇すると、TypeScript は ./ を開始点として使用して hello/world.ts を検索します。

import { helloWorld } から "hello/world";

checkJs

checkJS 設定は、JS ファイルの型チェックも実行します。この属性をオンにすると、allowJs も自動的にオンになります。これは、JS スクリプトの先頭に // @ts-check コマンドを追加するのと同じです。

{
  "コンパイラーオプション":{
    "checkJs": true
  }
}

複合

composite は、TypeScript プロジェクトを増分的にビルドできるように特定の設定を有効にし、多くの場合 incremental 属性と組み合わせて使用​​します。

宣言

declaration は、コンパイル時にスクリプトごとに型宣言ファイル .d.ts を生成するかどうかを設定します。

{
  "コンパイラーオプション": {
    「宣言」: true
  }
}

宣言ディレクトリ

declarationDir は、生成された .d.ts ファイルが配置されるディレクトリを設定します。

{
  "コンパイラーオプション": {
    「宣言」: true、
    "declarationDir": "./types"
  }
}

宣言マップ

declarationMap 設定により .d.ts 型宣言ファイルが生成されると、対応するソース マップ ファイルも生成されます。

{
  "コンパイラーオプション": {
    「宣言」: true"宣言マップ": true
  }
}

BOM を発行する

emitBOM は、コンパイル結果のファイルヘッダにバイトオーダーフラグ BOM を付加するかどうかを設定します。デフォルト値は false です。

EmitDeclarationOnly

emitDeclarationOnly は、コンパイル後に生成される .js ファイルではなく、.d.ts ファイルのみを設定します。

esModuleInterop

esModuleInterop は、CommonJS モジュールと ES6 モジュール間の互換性の問題のいくつかを修正します。

「module」属性が「node16」または「nodenext」の場合、「esModuleInterop」はデフォルトで「true」になり、それ以外の場合はデフォルトで「false」になります。

この属性がオンになっており、「import」コマンドを使用して CommonJS モジュールがロードされると、TypeScript は互換性の問題が存在するかどうかを厳密にチェックします。

import * as moment from 'moment'
moment(); // エラーを報告する

上記の例では、ES6の仕様により、「import * as moment」の「moment」はオブジェクトであり、関数として呼び出すことができないため、2行目でエラーが報告されています。

解決策は、上記のステートメントを書き換えてデフォルトのインターフェースをロードすることです。

「瞬間」から瞬間をインポート
moment(); // エラーは報告されませんでした

esModuleInterop をオンにした後、上記のコードが CommonJS モジュール形式にコンパイルされると、コンパイルされたコードが正しく動作することを保証するためにいくつかの補助関数が追加されます。

esModuleInterop を開くと、自動的に allowSyntheticDefaultImports が開くことに注意してください。

正確なオプションのプロパティタイプ

exactOptionalPropertyTypes によって設定されたオプションのプロパティには、unknown の値を割り当てることはできません。

//exactOptionalPropertyTypes を開きます
インターフェース MyObj {
  foo?: 'A' | 'B';
}

let obj:MyObj = { foo: 'A' };

obj.foo = 未定義; // エラー

上の例では、foo はオプションのプロパティです。exactOptionalPropertyTypes がオンになった後は、このプロパティを明示的に unknown に割り当てることはできません。

###forceConsistentCasingInFileNames

forceConsistentCasingInFileNames は、ファイル名の大文字と小文字を区別するかどうかを設定します。デフォルトは true です。

インクリメンタル

incremental を使用すると、TypeScript プロジェクトはビルド時に tsbuildinfo ファイルを生成することができ、それによってインクリメンタル ビルドが完了します。

インラインソースマップ

inlineSourceMap 設定は、SourceMap ファイルをコンパイルされた JS ファイルに書き込みます。それ以外の場合は、別の .js.map ファイルが生成されます。

インラインソース

inlineSources 設定は、コンパイルされた JS に元の .ts コードを埋め込みます。

sourceMap または inlineSourceMap の少なくとも 1 つが開いている必要があります。

孤立したモジュール

isoulatedModules は、現在の TypeScript スクリプトが単一のモジュールとしてコンパイルされるかどうか、他のスクリプトの型情報の不足によりエラーが報告されるかどうかを設定します。これは主に、非公式のコンパイル ツール (Babel など) が単一のモジュールを正しくコンパイルできるようにするためです。スクリプト。

jsx

jsx は、.tsx ファイルの処理方法を設定します。次の 5 つの値を取ることができます。

  • preserve: jsx 構文を変更しないで、出力ファイル名は .jsx になります。
  • react: <div />React.createElement("div") にコンパイルし、出力ファイル名は .js になります。
  • react-native: jsx 構文は変更せず、出力ファイルのサフィックスは .js です。
  • react-jsx: <div />_jsx("div") にコンパイルし、出力ファイル名は .js になります。
  • react-jsxdev: react-jsx に似ていますが、開発およびデバッグ項目が _jsx() に追加されており、出力ファイル名は .js です。
{
  "コンパイラーオプション": {
    "jsx": "保存"
  }
}

ライブラリ

lib 値は、プロジェクトがロードする必要がある TypeScript 組み込み型記述ファイルを記述する配列です。これは、三重スラッシュ ディレクティブ /// <reference lib="" /> と同じ効果があります。

{
  "コンパイラーオプション": {
    "lib": ["dom", "es2021"]
  }
}

TypeScript の組み込み型記述ファイルには主に次のものが含まれます。完全なリストについては、TypeScript ソース コード を参照してください。

-ES5 -ES2015 -ES6 -ES2016 -ES7 -ES2017 -ES2018 -ES2019 -ES2020 -ES2021 -ES2022

  • ESネクスト -DOM -ウェブワーカー -スクリプトホスト

listEmittedFiles

listEmittedFiles は、コンパイル中に端末に表示される生成ファイルを設定します。

{
  "コンパイラーオプション": {
    "listEmittedFiles": true
  }
}

リストファイル

listFiles は、コンパイル中に端末に表示され、このコンパイルに参加するファイルのリストを設定します。

{
  "コンパイラーオプション": {
    "listFiles": true
  }
}

マップルート

mapRoot は、デフォルトのビルド場所の代わりに SourceMap ファイルの場所を指定します。

{
  "コンパイラーオプション": {
    "sourceMap": true、
    "mapRoot": "https://my-website.com/debug/sourcemaps/"
  }
}

###モジュール

module はコンパイルされた製品のモジュール形式を指定します。そのデフォルト値は target 属性に関連します。 targetES3 または ES5 の場合、デフォルト値は commonjs で、それ以外の場合は ES6/ES2015 です。

{
  "コンパイラーオプション": {
    "モジュール": "commonjs"
  }
}

次の値を取ることができます: none、commonjs、amd、umd、system、es6/es2015、es2020、es2022、esnext、node16、nodenext。

モジュール解像度

moduleResolution モジュール パスを決定するためのアルゴリズム、つまりモジュールを見つける方法。次の 4 つの値を取ることができます。

  • node: Node.js の CommonJS モジュール アルゴリズムを採用します。
  • node16 または nodenext: Node.js の ECMAScript モジュール アルゴリズムを採用しており、TypeScript 4.7 以降でサポートされています。
  • classic: TypeScript 1.6 より前のアルゴリズム。新しいプロジェクトには推奨されません。
  • bundler: TypeScript 5.0 の新しいオプション。現在のコードが他のバンドラー (Webpack、Vite、esbuild、Parcel、rollup、swc など) によって処理されることを示すため、読み込みルールが緩和されます。これには module が必要です。 es2015 以降に設定するには、この機能の追加について PR の説明 を参照してください。

そのデフォルト値は、「module」属性に関連します。「module」が「AMD」、「UMD」、「System」または「ES6/ES2015」の場合、「module」が「node16」の場合、デフォルト値は「classic」です。 またはnodenextの場合、デフォルト値はこれら 2 つの値です。その他の場合、デフォルト値はNode` です。

moduleSuffixes

moduleSuffixes はモジュールのサフィックス名を指定します。

{
  "コンパイラーオプション": {
    "moduleSuffixes": [".ios"、".native"、""]
  }
}

上記の設定により、TypeScript はステートメント import * as foo from "./foo"; に対して次のスクリプト ./foo.ios.ts./foo.native.ts、および ./foo" を検索します。 `。

新しい行

newLine は、改行文字を CRLF (Windows) または LF (Linux) に設定します。

noEmit

noEmit はコンパイル結果を生成するかどうかを設定します。生成されない場合、TypeScript のコンパイルは純粋に型チェックとして機能します。

noEmitHelpers

noEmitHelpers 設定は、コンパイル結果ファイルに TypeScript 補助関数を挿入しませんが、NPM モジュール tslib などの外部補助関数を導入することで解決されます。

noEmitOnError

noEmitOnError は、コンパイル中にエラーが報告されると、コンパイル製品が生成されないことを指定します。デフォルトは false です。

noFallthroughCasesInSwitch

noFallthroughCasesInSwitch は、break ステートメント (または return および throw ステートメント) のない switch 分岐のエラーを報告するかどうかを設定します。つまり、case には終端ステートメント (break など) が存在する必要があります。コード。

noImplicitAny

noImplicitAny は、式に明示的な型の記述がなく、コンパイラが特定の型を推論できない場合に、式が 'any' 型であると推論できるかどうかを設定します。

これはブール値であり、デフォルトは「true」です。これは、「any」タイプが推論される限りエラーが報告されることを意味します。

noImplicitReturns

noImplicitReturns は、関数がいかなる状況でも値を返さなければならないかどうか、つまり関数に return ステートメントが必要かどうかを設定します。

noImplicitThis

noImplicitThis は、thisany 型であると推論された場合にエラーを報告するかどうかを設定します。

noUnusedLocals

noUnusedLocals は、未使用のローカル変数を許可するかどうかを設定します。

noUnusedパラメータ

noUnusedParameters は、未使用の関数パラメータを許可するかどうかを設定します。

アウトディレクトリ

outDir は、コンパイルされた製品が保存されるディレクトリを指定します。指定しない場合、コンパイルされた .js ファイルは、対応する .ts ファイルと同じ場所に保存されます。

出力ファイル

outFile 設定は、すべての非モジュール グローバル ファイルを同じファイルにコンパイルします。これは、「module」属性が「None」、「System」、「AMD」の場合にのみ有効であり、CommonJS または ES6 モジュールのパッケージ化には使用できません。

パス

paths は、モジュール名とモジュール パスの間のマッピング、つまり TypeScript が require または imports ステートメントによってロードされたモジュールをインポートする方法を設定します。

pathsbaseUrl に基づいてロードされるため、後者も同時に設定する必要があります。

{
  "コンパイラーオプション": {
    "baseUrl": "./",
    「パス」: {
      "b": ["バー/b"]
    }
  }
}

ワイルドカード文字「*」も使用できます。

{
  "コンパイラーオプション": {
    "baseUrl": "./",
    「パス」: {
      "@bar/*": ["bar/*"]
    }
  }
}

prepareConstEnums

preserveConstEnums は、const enum 構造を定数値に置き換えずに保存します。

{
  "コンパイラーオプション": {
    "preserveConstEnums": true
  }
}

かわいい

pretty は、出力ターミナルを美しくするためのコンパイル情報を設定します。デフォルトは true です。

コメントを削除

removeComments は TypeScript スクリプト内のコメントを削除します。デフォルトは false です。

###resolveJsonModule

resolveJsonModule を使用すると、import コマンドで JSON ファイルをインポートできるようになります。

ルートディレクトリ

rootDir は、主にコンパイルされたスクリプト構造に関連する、ソース スクリプトが配置されるディレクトリを設定します。 「rootDir」に対応するディレクトリ内のすべてのスクリプトが、出力ディレクトリの最上位スクリプトになります。

rootDirs

rootDirs は、モジュールの場所を見つけやすくするために、複数の異なるディレクトリを仮想ディレクトリにマージします。

{
  "コンパイラーオプション": {
    "rootDirs": ["bar", "foo"]
  }
}

上の例では、rootDirsbarfoo を仮想ディレクトリに結合します。

ソースマップ

sourceMap は、コンパイル中に SourceMap ファイルを生成するかどうかを設定します。

ソースルート

sourceRoot は、SourceMap 内の TypeScript ソース ファイルの場所を設定します。

{
  "コンパイラーオプション": {
    "sourceMap": true、
    "sourceRoot": "https://my-website.com/debug/source/"
  }
}

厳しい

strict は、TypeScript で厳密なチェックをオンにするために使用されます。その値はブール値であり、デフォルトではオフになっています。

{
  "コンパイラーオプション": {
    「厳密」: true
  }
}

この設定は、以下の一連の設定を同時にオンにすることと同じです。

-常に厳格

  • strictNullChecks
  • strictBindCallApply
  • strictFunctionTypes
  • strictPropertyInitialization -noImplicitAny
  • noImplicitThis
  • UnknownInCatchVariables を使用する

「strict」をオンにすると、項目の 1 つを個別にオフにすることができます。

{
  "コンパイラーオプション": {
    "厳密": true、
    「常に厳密」: false
  }
}

strictBindCallApply

strictBindCallApply は、関数の call()bind()apply() の 3 つのメソッドに対して型チェックを行うかどうかを設定します。

strictBindCallApply コンパイル オプションがオンになっていない場合、コンパイラは上記 3 つのメソッドに対して型チェックを実行せず、パラメータの型はすべて any であり、パラメータが渡されてもコンパイル エラーは生成されません。

関数 fn(x: 文字列) {
  parseInt(x) を返します。
}

// strictBindCallApply:false
const n = fn.call(未定義, false);
//上記はエラーを報告しません

strictFunctionTypes

strictFunctionTypes を使用すると、関数の引数をより厳密にチェックできます。具体的には、関数 B の引数が関数 A の引数のサブタイプである場合、関数 B は関数 A の代わりに使用できません。

関数 fn(x:string) {
  console.log('こんにちは、' + x.toLowerCase());
}

type StringOrNumberFunc = (ns:string|number) => void;

// strictFunctionTypes をオンにすると、次のコードはエラーを報告します
func:StringOrNumberFunc = fn; にします。

上記の例では、関数 fn() のパラメータは StringOrNumberFunc のパラメータのサブセットであるため、fnStringOrNumberFunc を置き換えることはできません。

strictNullChecks

strictNullChecks は、nullunknown に対する厳密な型チェックを設定します。 strict 属性がオンになっている場合、この項目は自動的に true に設定され、それ以外の場合は false になります。

let 値:文字列;

// strictNullChecks:false
//次のステートメントはエラーを報告しません
値 = null;

開いている限り、明示的に「null」または「未定義」をチェックする必要があることがわかります。

関数 doSomething(x:string|null) {
  if (x === null) {
    // 何もしない
  } それ以外 {
    console.log("こんにちは" + x.toUpperCase());
  }
}

strictPropertyInitialization

strictPropertyInitialization は、次の状況を含む、初期化されるクラスのインスタンス プロパティを設定します。

  • 「未定義」タイプに設定します
  • 明示的な初期化
  • コンストラクターでの代入

この属性を使用する場合は、「strictNullChecks」をオンにする必要があることに注意してください。

// strictPropertyInitialization: true
クラス ユーザー {
  // エラー、ユーザー名属性が初期化されていません
  ユーザー名: 文字列;
}

//解決策 1
クラス ユーザー {
  ユーザー名 = '張三';
}

//解決策 2
クラス ユーザー {
  ユーザー名:文字列|未定義;
}

//解決策 3
クラス ユーザー {
  ユーザー名:文字列;

  コンストラクター(ユーザー名:文字列) {
    this.username = ユーザー名;
  }
}
// または
クラス ユーザー {
  コンストラクター(パブリック ユーザー名:文字列) {}
}

//解決策 4: 代入アサーション
クラス ユーザー {
  ユーザー名!:文字列;

  コンストラクター(ユーザー名:文字列) {
    this.initialize(ユーザー名);
  }

  プライベート初期化(ユーザー名:文字列) {
    this.username = ユーザー名;
  }
}

過剰プロパティエラーを抑制

suppressExcessPropertyErrors は、オブジェクト リテラルの過剰なパラメーターに対するエラー報告をオフにします。

###ターゲット

「target」は、コンパイルされた JavaScript コードの ECMAScript バージョン (「es2021」など) を指定します。デフォルトは「es3」です。

次の値を取ることができます。

-es3 -es5

  • es6/es2015 -es2016 -es2017 -es2018 -es2019 -es2020 -es2021 -es2022 -エスネクスト

"target": "es3" など、コンパイルされたターゲットのバージョンが古すぎる場合、一部の構文はコンパイルされない可能性があり、tsc コマンドはエラーを報告することに注意してください。

トレース解像度

traceResolution は、コンパイル時にターミナルに出力されるモジュール解析の特定の手順を設定します。

{
  "コンパイラーオプション": {
    "トレース解像度": true
  }
}

typeRoots

typeRoots は、タイプ モジュールが配置されるディレクトリを設定します。デフォルトは、このディレクトリ内のモジュールがコンパイルに自動的に追加されます。この属性を指定すると、デフォルト値 node_modules/@types 内のタイプ モジュールは使用されなくなります。

この属性の値は配列であり、配列の各メンバーはディレクトリであり、それらのパスは tsconfig.json の場所を基準としています。

{
  "コンパイラーオプション": {
    "typeRoots": ["./typings", "./vendor/types"]
  }
}

種類

デフォルトでは、typeRoots ディレクトリ内のすべてのモジュールが自動的にコンパイルに追加されます。types 属性が指定されている場合、そこにリストされているモジュールのみがコンパイルに自動的に追加されます。

{
  "コンパイラーオプション": {
    "タイプ": ["ノード"、"ジェスト"、"エクスプレス"]
  }
}

上記の設定は、デフォルトで ./node_modules/@types/node./node_modules/@types/jest、および ./node_modules/@types/express のみがコンパイルに自動的に追加されることを意味します。 /@types/ディレクトリ内の他のnode_modules モジュールはコンパイルに含まれません。

"types": [] の場合、すべての @types モジュールがコンパイルに自動的に追加されないことを意味します。

useDefineForClassFields

useDefineForClassFields 設定は、クラスの先頭で宣言されたプロパティを対象としています。 TypeScript によるこのタイプのプロパティの以前の処理は、ES2022 標準に記述された方法と矛盾していました。この設定を「true」に設定すると ES2022 の処理方法が有効になり、「false」に設定すると TypeScript 独自の処理方法が有効になります。

そのデフォルト値は target 属性に関連します。コンパイル ターゲットが ES2022 以降の場合、useDefineForClassFields のデフォルト値は true で、それ以外の場合は false になります。

useUnknownInCatchVariables

useUnknownInCatchVariables は、catch ステートメントによってキャプチャされた try によってスローされる戻り値の型を、any から unknown に設定します。

試す {
  some外部関数();
} キャッチ (エラー) {
  エラー; // 任意の値を入力してください
}

上記の例では、デフォルトでは、「catch」ステートメントの「err」パラメータは「any」型です。これは、任意の値を指定できることを意味します。

useUnknownInCatchVariables をオンにすると、err タイプによってスローされるエラーは unknown タイプになります。これによってもたらされる変更は、「err」を使用する前にその型を絞り込む必要があることです。そうしないと、エラーが報告されます。

試す {
  some外部関数();
} キャッチ (エラー) {
  if (err エラーのインスタンス) {
    console.log(err.message);
  }
}

参考リンク


作者: wangdoc

アドレス: https://wangdoc.com/

ライセンス: クリエイティブ・コモンズ 3.0