Penghias dalam TypeScript 5.0: Modifikasi kelas dan kaedah dengan elegan
Penghias hampir selalu menjadi sebahagian daripada ECMAScript. Alat -alat yang kemas ini membolehkan kami mengubah suai kelas dan ahli dengan cara yang boleh diguna semula. Mereka telah berada dalam jenis untuk beberapa waktu -walaupun di bawah tanda -tanda eksperimen. Walaupun lelaran tahap 2 penghias telah eksperimen, mereka telah digunakan secara meluas dalam perpustakaan seperti Mobx, Angular, Nest, dan TypeOrm. TypeScript 5.0's Decorator disegerakkan sepenuhnya dengan cadangan ECMAScript dan sudah sangat matang dan berada di Peringkat 3.
Penghias membolehkan kita membuat fungsi yang menyesuaikan tingkah laku kelas dan kaedahnya. Katakan kita perlu menambah beberapa kenyataan debug kepada kaedah ini. Sebelum TypeScript 5.0, kami hanya boleh menyalin dan menyisipkan pernyataan debug secara manual dalam setiap kaedah. Dengan penghias, kita hanya perlu beroperasi sekali dan perubahan digunakan untuk setiap kaedah yang dilampirkan pada penghias.
mari kita buat penghias untuk melayari salah satu kaedah yang diberikan:
class Card { constructor(public suit: Suit, public rank: Rank) { this.suit = suit; this.rank = rank; } get name(): CardName { return `${this.rank} of ${this.suit}`; } @deprecated // ? 这是一个装饰器! getValue(): number { if (this.rank === 'Ace') return 14; if (this.rank === 'King') return 13; if (this.rank === 'Queen') return 12; if (this.rank === 'Jack') return 11; return this.rank; } // 新的实现方式! get value(): number { if (this.rank === 'Ace') return 14; if (this.rank === 'King') return 13; if (this.rank === 'Queen') return 12; if (this.rank === 'Jack') return 11; return this.rank; } } const card = new Card('Spades', 'Queen'); card.getValue();
const deprecated = <This, Arguments extends any[], ReturnValue>( target: (this: This, ...args: Arguments) => ReturnValue, context: ClassMethodDecoratorContext<ReturnValue> ) => { const methodName = String(context.name); function replacementMethod(this: This, ...args: Arguments): ReturnValue { console.warn(`Warning: '${methodName}' is deprecated.`); return target.call(this, ...args); } return replacementMethod; };
Penghias
menyediakan gula sintaksis yang mudah untuk menambah mesej log (seperti yang kita lakukan dalam contoh di atas) dan banyak kes penggunaan biasa yang lain. Sebagai contoh, kita boleh membuat penghias yang secara automatik akan mengikat kaedah untuk contoh semasa, atau mengubah suai deskriptor harta kaedah atau kelas.Artikel ini dikutip dari "Membuka Kuasa Typescript" dan boleh dibeli di peruncit SitePoint Premium dan E-book.
Atas ialah kandungan terperinci Petua Pantas: Penghias dalam TypeScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!