メソッドデコレーターとプロパティデコレーター
個々のメソッドやプロパティをデコレートします。
「メソッドデコレーターとプロパティデコレーター」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。
概要
導入
基本概念
@sealed
class BugReport {
type = 'report';
title: string;
constructor(t: string) { this.title = t; }
}クラスデコレーター
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}メソッドデコレーター
function log(target: any, key: string, desc: PropertyDescriptor) {
const orig = desc.value;
desc.value = function(...args: any[]) {
console.log('Calling', key);
return orig.apply(this, args);
};
}プロパティデコレーター
function readonly(target: any, key: string) {
Object.defineProperty(target, key, { writable: false });
}パラメーターデコレーター
function required(target: any, key: string, index: number) {
const meta = Reflect.getMetadata('required', target, key) || [];
meta.push(index);
Reflect.defineMetadata('required', meta, target, key);
}デコレーターファクトリ
function role(name: string) {
return function(target: any, key: string) {
Reflect.defineMetadata('role', name, target, key);
};
}
class UserController {
@role('admin')
deleteUser() {}
}NestJS のデコレーター
@Controller('users')
class UsersController {
constructor(private usersService: UsersService) {}
@Get()
findAll(): User[] {
return this.usersService.findAll();
}
}reflect-metadata
import 'reflect-metadata';
// Enable in tsconfig: experimentalDecorators: true, emitDecoratorMetadata: trueデコレーターの適用順序
@first
@second
class Example {}
// Applied: second first, then first確認問題
まとめ
よくある質問
「メソッドデコレーターとプロパティデコレーター」レッスンは無料ですか?
はい。「メソッドデコレーターとプロパティデコレーター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。
「メソッドデコレーターとプロパティデコレーター」で何を学びますか?
個々のメソッドやプロパティをデコレートします。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「メソッドデコレーターとプロパティデコレーター」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラスデコレーター:動作のラップ
- メソッドデコレーターとプロパティデコレーター
- パラメーターデコレーターとメタデータ
- フレームワークのデコレーター:NestJSの例