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

<Meta title='@dxtmisha/ru/functional-basic/Functions/anyToString - Преобразование значения в строку'/>

# `anyToString`

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

**Параметры:**
- `value: V` — Значение для преобразования.
- `isArrayString: boolean = true` — Если `true`, массивы примитивов объединяются через запятую.
- `trim: boolean = true` — Если `true`, обрезает лишние пробелы (только для строк).

**Правила преобразования:**
- **Строки**: Возвращаются как есть (с `trim`, если включено).
- **Массивы**: Если `isArrayString: true` и в массиве нет объектов, элементы объединяются через запятую. В остальных случаях — JSON.
- **Объекты**: Преобразуются в JSON. При ошибке (например, циклической ссылке) возвращается стандартный `toString()`.
- **Boolean**: `true` преобразуется в `'1'`, `false` — в `'0'`.
- **Прочие типы**: `null` и `undefined` дают пустую строку. Для остальных вызывается `toString()`.

**Возвращает:**
`string` — Строковое представление значения.

## Примеры

<Source
  language='typescript'
  code={`
import { anyToString } from '@dxtmisha/functional-basic'

// 1. Строки
anyToString('  Hello  ')               // 'Hello'
anyToString('  Hello  ', true, false)  // '  Hello  '

// 2. Массивы
anyToString([1, 2, 3])                 // '1,2,3'
anyToString([1, 2, 3], false)          // '[1,2,3]'

// 3. Объекты
anyToString({ a: 1 })                  // '{"a":1}'

// 4. Логические значения (преобразование в 1/0)
anyToString(true)                      // '1'
anyToString(false)                     // '0'

// 5. Пустые значения и типы
anyToString(null)                      // ''
anyToString(123)                       // '123'
anyToString(Symbol('test'))            // 'Symbol(test)'
  `}
/>
