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

<Meta title='@dxtmisha/ru/functional-basic/# Переменные и Данные'/>

# Переменные и Данные

Набор утилит для надежной проверки типов, безопасного преобразования данных и эффективной манипуляции объектами и массивами. Эти функции помогают избежать ошибок `undefined` и упрощают обработку сложных структур.

## Проверка типов (is...)

Функции для определения типа и содержимого переменных.

```javascript
import { isFilled, isObject, isFunction } from '@dxtmisha/functional-basic'

// 1. Проверка на наличие контента (не пустая строка/массив/объект)
isFilled('hello') // true
isFilled([])      // false

// 2. Проверка на объект (включает массивы, исключает null)
isObject({ a: 1 }) // true
isObject([1, 2])   // true

// 3. Проверка на объект без массивов
isObjectNotArray({ a: 1 }) // true
isObjectNotArray([1, 2])   // false

// 4. Проверка, является ли значение функцией
isFunction(() => {}) // true
```

## Преобразование (to...)

Утилиты для приведения данных к нужному типу или формату.

```javascript
import { toNumber, toArray, toCamelCase, transformation } from '@dxtmisha/functional-basic'

// 1. Приведение к числу (с поддержкой очистки строк)
toNumber('100.50 px') // 100.5

// 2. Гарантированный массив
toArray('single') // ['single']
toArray([1, 2])   // [1, 2]

// 3. Автоматическое определение типа из строки
transformation('true')  // true (boolean)
transformation('12.5')  // 12.5 (number)
transformation('{"a":1}') // { a: 1 } (object)

// 4. Форматирование строк
toCamelCase('background-color') // 'backgroundColor'
```

## Манипуляция данными

Методы для глубокого копирования и безопасного доступа к свойствам.

```javascript
import { copyObject, getItemByPath, getObjectNoUndefined } from '@dxtmisha/functional-basic'

// 1. Глубокое копирование объекта
const clone = copyObject(original)

// 2. Безопасное получение значения по пути
const value = getItemByPath(myData, 'user.profile.name')

// 3. Очистка объекта от пустых значений
const cleaned = getObjectNoUndefined({ a: 1, b: undefined, c: null }, null) 
// { a: 1, b: undefined } (удалит только c: null)
```

## Работа с массивами

Утилиты для фильтрации и итерации.

```javascript
import { uniqueArray, forEach } from '@dxtmisha/functional-basic'

// 1. Удаление дубликатов
uniqueArray([1, 2, 2, 3, 1]) // [1, 2, 3]

// 2. Универсальный итератор (для массивов и объектов)
forEach([10, 20], (value, index) => {
  console.log(`${index}: ${value}`)
})
```
