Управление методами в зависимости от окружения в 🅰️ngular

Бывают случаи, когда нужно, чтобы определенные методы работали только:
🛠️ В dev-режиме (например, фича-тогглы, дебаг-логи, экспериментальные функции)
🚀 В prod-режиме (аналитика, мониторинг, продакшен-логика)
Вместо того чтобы писать if (isDevMode()) {...}
везде, можно использовать декораторы Angular для более чистого и декларативного подхода.
_____
Одно из решений:
export function EnvMode(mode: 'dev' | 'prod') {
return function (_: unknown, __: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: unknown[]) {
const shouldExecute = mode === 'dev' ? isDevMode() : !isDevMode();
if (!shouldExecute) return;
return originalMethod.apply(this, args);
};
return descriptor;
};
}
_____
Как использовать:
@EnvMode('dev')
public setFeatureToggle(): void {
// Сработает только в dev-режиме
}
@EnvMode('prod')
public sendAnalytics(): void {
// Сработает только в prod-режиме
}
_____
🤔 А вы создавали кастомные декораторы? Зачем?
Больше про Angular в тг канале