import { Meta } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Functions/executeFunction - Выполнить функцию или вернуть значение'/>

# `executeFunction`

Универсальная утилита для обработки аргументов, которые могут быть как статическим значением, так и функцией. Если переданный аргумент является функцией, `executeFunction` выполняет его с указанными аргументами и возвращает результат. В противном случае возвращается сам аргумент.

Этот паттерн крайне эффективен для реализации «ленивых» вычислений, динамических значений по умолчанию или свойств конфигурации, которые могут быть как фиксированными, так и вычисляемыми.

**Параметры:**
- `callback: T | ((...args: any[]) => T)` — Значение для обработки. Может быть литералом или функцией, возвращающей тип `T`.
- `...args: any[]` (опционально) — Аргументы, которые будут переданы в функцию, если `callback` является вызываемым.

**Возвращает:**
`T` — Результат выполнения функции или само исходное значение.

```typescript
import { executeFunction } from '@dxtmisha/functional-basic'

// 1. Обработка статического значения
console.log(executeFunction('Привет')) // 'Привет'

// 2. Динамическое выполнение
const getLabel = (prefix: string) => `${prefix}: Текст`
console.log(executeFunction(getLabel, 'Админ')) // 'Админ: Текст'

// 3. Гибкая логика вызова
const value = Math.random() > 0.5 ? 'Статика' : () => 'Вычислено'
console.log(executeFunction(value)) // 'Статика' или 'Вычислено'
```
