#tsconfig.json
導入
tsconfig.json
は TypeScript プロジェクトの設定ファイルで、プロジェクトのルート ディレクトリに配置されます。一方、ディレクトリに tsconfig.json
がある場合、TypeScript はそれをプロジェクトのルート ディレクトリと見なします。
プロジェクトのソース コードが JavaScript であるが、それを処理するために TypeScript を使用したい場合、構成ファイルの名前は jsconfig.json
となり、tsconfig
と同じように記述されます。
tsconfig.json
ファイルは主に tsc
コンパイラによって使用され、そのコマンド ライン パラメータ --project
または -p
で tsconfig.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.json
で composite
プロパティを有効にする必要があります。
{
"コンパイラーオプション": {
「複合」: 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
属性に関連します。 target
が ES3
または 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
は、this
が any
型であると推論された場合にエラーを報告するかどうかを設定します。
noUnusedLocals
noUnusedLocals
は、未使用のローカル変数を許可するかどうかを設定します。
noUnusedパラメータ
noUnusedParameters
は、未使用の関数パラメータを許可するかどうかを設定します。
アウトディレクトリ
outDir
は、コンパイルされた製品が保存されるディレクトリを指定します。指定しない場合、コンパイルされた .js
ファイルは、対応する .ts
ファイルと同じ場所に保存されます。
出力ファイル
outFile
設定は、すべての非モジュール グローバル ファイルを同じファイルにコンパイルします。これは、「module」属性が「None」、「System」、「AMD」の場合にのみ有効であり、CommonJS または ES6 モジュールのパッケージ化には使用できません。
パス
paths
は、モジュール名とモジュール パスの間のマッピング、つまり TypeScript が require
または imports
ステートメントによってロードされたモジュールをインポートする方法を設定します。
paths
は baseUrl
に基づいてロードされるため、後者も同時に設定する必要があります。
{
"コンパイラーオプション": {
"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"]
}
}
上の例では、rootDirs
が bar
と foo
を仮想ディレクトリに結合します。
ソースマップ
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
のパラメータのサブセットであるため、fn
は StringOrNumberFunc
を置き換えることはできません。
strictNullChecks
strictNullChecks
は、null
と unknown
に対する厳密な型チェックを設定します。 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);
}
}
参考リンク
- TypeScript における厳密なプロパティの初期化、Marius Schulz
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0