TypeScript のデコレーターは、メタデータを追加したり、クラス、メソッド、プロパティ、パラメーターの動作を変更したりできる強力な機能です。これらは、コンポーネントやサービスを強化するために Angular などのフレームワークでよく使用されます。初心者でも経験豊富な開発者でも、この記事では、TypeScript アプリケーションを強化するための独自のデコレーターを作成する手順を段階的に説明します。
始める前に、以下のものがあることを確認してください:
{ "compilerOptions": { "experimentalDecorators": true } }
デコレーターは、クラス、メソッド、プロパティ、またはパラメーターに適用される関数です。記号 @ を先頭に付けると、デコレーターは、付加されている要素を変更または強化できます。その主な用途は次のとおりです:
componentName プロパティをクラスに追加するデコレーターを作成します。
function Component(name: string) { return function (constructor: Function) { constructor.prototype.componentName = name; }; }
説明:
このデコレータは名前文字列を受け取り、それをクラス プロトタイプのプロパティとして追加します。このクラスのすべてのインスタンスは、このプロパティにアクセスできます。
デコレータをクラスに適用してみましょう。
@Component('MonComposant') class MonComposant { constructor() { console.log(`Le nom du composant est : ${this.componentName}`); } }
クラスのインスタンスを作成して、その動作を確認してみましょう。
const composant = new MonComposant(); // Affiche : Le nom du composant est : MonComposant
このデコレータはプロパティへの変更を監視し、ログに記録します。
function Input() { return function (target: any, propertyKey: string) { let value: any; const getter = () => { return value; }; const setter = (newValue: any) => { console.log(`La valeur de ${propertyKey} a été mise à jour : ${newValue}`); value = newValue; }; Object.defineProperty(target, propertyKey, { get: getter, set: setter, enumerable: true, configurable: true, }); }; }
説明:
デコレーターは Object.defineProperty を使用して、プロパティへの変更をインターセプトします。これにより、変更ログなどのカスタム ロジックを追加できます。
プロパティに適用してみましょう。
{ "compilerOptions": { "experimentalDecorators": true } }
プロパティを変更して効果を確認します。
function Component(name: string) { return function (constructor: Function) { constructor.prototype.componentName = name; }; }
TypeScript デコレーターは、クラスとプロパティに機能とメタデータを追加するためのエレガントかつ強力な方法を提供します。この記事を読むことで、次のことを学びました:
これらの簡単な例は、デコレーターがコードの読みやすさと保守性をどのように向上させることができるかを示しています。 TypeScript の公式ドキュメントをさらに詳しく調べて、Reflect.metadata でリフレクトされたメタデータを使用するなど、さらに高度なアプリケーションを見つけてください。
以上がTypeScript のデコレータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。