TypeScript

TypeScript は、JavaScript にコンパイルされる JavaScript の型付きスーパーセットです。Parcel は追加の設定なしで TypeScript をすぐにサポートします。

トランスパイル

#

Parcel は、.ts または .tsx ファイルを使用するたびに TypeScript を自動的にトランスパイルします。TypeScript を JavaScript に変換するために型を取り除くことに加えて、Parcel は、ブラウザのターゲットに応じて、クラスや async await などの最新の言語機能も必要に応じてコンパイルします。また、JSX も自動的にトランスパイルします。詳細は、JavaScript ドキュメントの トランスパイル セクションを参照してください。

tsconfig.json ファイルを使用して、トランスパイルのいくつかの側面を設定できます。現在、JSX オプションに加えて、experimentalDecorators および useDefineForClassFields オプションがサポートされています。詳細は、TSConfig リファレンス を参照してください。

tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true,
"jsxImportSource": "preact"
}
}

isolatedModules

#

Parcel は各ファイルを個別に処理するため、暗黙的に isolatedModules オプションが有効になります。これは、コンパイルにファイル間の型情報が必要な const enum など、一部の TypeScript 機能が動作しないことを意味します。IDE と型チェック中にこれらの機能の使用について警告を受けるには、tsconfig.json でこのオプションを有効にする必要があります。

tsconfig.json
{
"compilerOptions": {
"isolatedModules": true
}
}

TSC

#

TSC は、Microsoft 製の公式 TypeScript コンパイラです。TypeScript 用の Parcel のデフォルトのトランスパイラは TSC よりもはるかに高速ですが、Parcel がサポートしていない tsconfig.json の設定を使用している場合は、TSC を使用する必要がある場合があります。このような場合は、@parcel/transformer-typescript-tsc プラグインを .parcelrc に追加して使用できます。

.parcelrc
{
"extends": "@parcel/config-default",
"transformers": {
"*.{ts,tsx}": ["@parcel/transformer-typescript-tsc"]
}
}

TSC を使用する場合でも、Parcel は引き続き各 TypeScript ファイルを個別に処理するため、isolatedModules に関する注意は引き続き適用されます。さらに、paths などの一部の解決機能は、現在 Parcel ではサポートされていません。TSC トランスフォーマーは、型チェックも実行しません(下記参照)。

Babel

#

Babel を使用して TypeScript をコンパイルすることもできます。@babel/preset-typescript を含む Babel 設定が見つかった場合、Parcel はそれを使用して .ts および .tsx ファイルをコンパイルします。これは、上記の分離モジュールに関する注意事項と同じです。詳細は、JavaScript ドキュメントの Babel を参照してください。

解決

#

Parcel は現在、TypeScript 固有の解決拡張である tsconfig.jsonbaseUrl または paths オプションをサポートしていません。代わりに、Parcel の チルダ または 絶対 指定子を使用して同様の目標を達成できる場合があります。TypeScript がこれらをサポートするように設定する方法については、依存関係解決ドキュメントの 他のツールの設定 を参照してください。

型定義の生成

#

ライブラリをビルドする場合、Parcel はエントリポイントから型を抽出して .d.ts ファイルを生成できます。これを有効にするには、package.jsontypes フィールドを mainmodule などのターゲットと一緒に使用します。

package.json
{
"source": "src/index.ts",
"module": "dist/index.js",
"types": "dist/index.d.ts"
}

詳細は、Parcel でライブラリをビルドする を参照してください。

型チェック

#

デフォルトでは、Parcel は型チェックを実行しません。型チェックを行うための推奨される方法は、TypeScript をサポートするエディター(VSCode など)を使用し、CI で tsc を使用してコードの型チェックを行うことです。ビルド、テスト、リンティングと並行して実行するように npm スクリプトを使用してこれを設定できます。

package.json
{
"scripts": {
"build": "parcel build src/index.ts",
"test": "jest",
"lint": "eslint",
"check": "tsc --noEmit",
"ci": "yarn build && yarn test && yarn lint && yarn check"
}
}

実験的なバリデータープラグイン

#

@parcel/validator-typescript プラグインは、Parcel ビルド内で型チェックを行うための実験的な方法です。バンドルが生成された後、バックグラウンドで実行されます。tsconfig.jsoninclude オプションにすべてのソースファイルが含まれていることを確認してください。

.parcelrc
{
"extends": "@parcel/config-default",
"validators": {
"*.{ts,tsx}": ["@parcel/validator-typescript"]
}
}
tsconfig.json
{
"include": ["src/**/*"],
"compilerOptions": {
"target": "es2021",
"strict": true
}
}

警告: Parcel バリデータープラグインは実験的であり、不安定な場合があります。