K
K.V. Afilate
@kvafilate18 подп.
300просмотров
6 марта 2025 г.
statsScore: 330
1️⃣ Первый вариант: Log как обычная функция function Log( target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(...args: any[]) => any> ): TypedPropertyDescriptor<(...args: any[]) => any> | void { descriptor.value = () => { console.log('Жопа'); } } 🔹 Это функция-декоратор, которая сразу применяется к методу класса. 🔹 Вызывается без скобок @Log, так как это просто функция. 🔹 Перезаписывает метод, заменяя его на () => console.log('Жопа'). Использование class Example { @Log doSomething() { console.log('Оригинальный метод'); } } const e = new Example(); e.doSomething(); // Выведет "Жопа" 2️⃣ Второй вариант: Log как фабрика декораторов function Log() { return ( target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(...args: any[]) => any> ): TypedPropertyDescriptor<(...args: any[]) => any> | void => { descriptor.value = () => { console.log('Жопа'); } } } 🔹 Фабрика декораторов — это функция, которая возвращает сам декоратор. 🔹 Требует вызова с круглыми скобками @Log(), так как это функция, которая возвращает другую функцию. 🔹 Позволяет передавать параметры в декоратор (например, логгирование разного уровня). 👉 Использование: class Example { @Log() // Требуются скобки doSomething() { console.log('Оригинальный метод'); } } const e = new Example(); e.doSomething(); // Выведет "Жопа"
300
просмотров
1538
символов
Нет
эмодзи
Нет
медиа

Другие посты @kvafilate

Все посты канала →
1️⃣ Первый вариант: Log как обычная функция function Log( ta — @kvafilate | PostSniper