Skip to main content
Практика завдань

Що таке декоратори в TypeScript?

Декоратори — це спеціальні функції, які можна застосовувати до класів, методів, властивостей або параметрів, щоб додати або змінити поведінку під час виконання або компіляції.

Декоратори є своєрідними "анотаціями" або "модифікаторами", які працюють на рівні метаданих.

Щоб працювати з декораторами, потрібно увімкнути прапорці:

json
{ "experimentalDecorators": true, "emitDecoratorMetadata": true }

Де можна використовувати декоратори?

  • Класи
  • Методи
  • Властивості
  • Параметри
  • Аксесори (get/set)

Приклад: Декоратор класу

typescript
function Logger(constructor: Function) { console.log(`Клас створено: ${constructor.name}`); } @Logger class User { constructor(public name: string) {} }

Декоратор Logger буде викликано під час визначення класу User, виводячи ім'я конструктора.

Приклад: Декоратор методу

typescript
function LogMethod( target: any, propertyKey: string, descriptor: PropertyDescriptor ) { const original = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Метод ${propertyKey} викликано з`, args); return original.apply(this, args); }; } class MathService { @LogMethod sum(a: number, b: number) { return a + b; } }

Цей декоратор веде облік викликів методу та його аргументів.

Приклад: Декоратор пропси

typescript
function Readonly(target: any, propertyKey: string) { Object.defineProperty(target, propertyKey, { writable: false, }); } class Config { @Readonly version = "1.0"; }

Властивість version тепер неможливо змінити.

Приклад: Декоратор параметра

typescript
function LogParam(target: Object, propertyKey: string | symbol, parameterIndex: number) { console.log(`Параметр методу ${String(propertyKey)} на позиції ${parameterIndex}`); } class Example { test(@LogParam msg: string) { console.log(msg); } }

Використовується рідко, але може бути корисним для валідації або ведення обліку.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань