TypeScriptコンパイル時の警告「Experimental decorators warning in TypeScript compilation」を解決する方法
TypeScriptコンパイル時に「Experimental decorators warning in TypeScript compilation」という警告が表示されることがあります。これは、TypeScript 4.0で導入された実験的なデコレータ機能に関連する警告です。
警告内容
この警告は、デコレータ機能がまだ実験段階であり、将来のバージョンで変更される可能性があることを示しています。警告メッセージには、影響を受けるコードの行番号と、使用されているデコレータの名前が表示されます。
影響を受けるコード
この警告は、以下のいずれかに該当するコードに対して表示されます。
@experimental
デコレータが付与されたクラス、関数、またはプロパティ--experimentalDecorators
フラグが設定されたコンパイラ
警告への対処方法
無視する
警告を無視して、コードをそのままコンパイルすることができます。ただし、将来のバージョンでデコレータ機能が変更された場合、コードが動作しなくなる可能性があります。
@ts-expect-error コメントを使用する
警告を抑制するために、影響を受けるコード行に @ts-expect-error
コメントを追加することができます。
// @ts-expect-error
@experimental
class MyClass {
// ...
}
デコレータ機能を使用しない
実験的なデコレータ機能を使用せずに、コードを書き換えることができます。
以下の情報源から、この警告に関する詳細情報を得ることができます。
Visual Studio Code では、この警告は波線の下線で表示されます。警告メッセージにマウスオーバーすると、警告の詳細が表示されます。
「Experimental decorators warning in TypeScript compilation」警告は、実験的なデコレータ機能を使用している場合に表示されます。警告への対処方法は、状況によって異なります。詳細情報は、上記の情報源を参照してください。
補足
- TypeScript 4.0以降では、デフォルトで
--experimentalDecorators
フラグが有効になっています。 - TypeScript 3.9以前では、この警告は表示されません。
用語解説
- デコレータ:クラス、関数、またはプロパティに付加情報を追加するための機能
- 実験段階:まだ開発中であり、将来変更される可能性がある段階
// @experimental
class MyClass {
// ...
}
const myInstance = new MyClass();
console.log(myInstance);
このコードをコンパイルすると、以下の警告が表示されます。
experimentalDecorators.ts(1, 6): warning TS1217: Experimental syntax 'decorators'.
この警告を抑制するには、以下のいずれかの方法を使用できます。
// @ts-expect-error
@experimental
class MyClass {
// ...
}
const myInstance = new MyClass();
console.log(myInstance);
class MyClass {
// ...
}
const myInstance = new MyClass();
console.log(myInstance);
tsc experimentalDecorators.ts --noExperimentalDecorators
このフラグを設定すると、実験的なデコレータ機能は無効化されます。
このサンプルコードは、TypeScript 4.0以降で使用できます。
その他の対処方法
tsconfig.json ファイルに experimentalDecorators
オプションを追加することで、プロジェクト全体で警告を抑制することができます。
{
"compilerOptions": {
"experimentalDecorators": true
}
}
IDE の設定を使用する
Visual Studio Code などの IDE では、警告を抑制するための設定があります。設定方法は IDE によって異なりますが、一般的には以下の手順で設定できます。
- TypeScript の設定を探します。
- 「Experimental decorators warning」に関する設定を見つけて、無効にします。
別のデコレータライブラリを使用する
@experimental
デコレータの代わりに、別のデコレータライブラリを使用することができます。
注意事項
これらの方法を使用する場合は、以下の点に注意してください。
- 将来のバージョンでデコレータ機能が変更された場合、コードが動作しなくなる可能性があります。
- IDE の設定方法や、別のデコレータライブラリの使用方法については、それぞれのドキュメントを参照してください。
typescript decorator visual-studio-code