pure-functionslisted
Install: claude install-skill InExSu/claude-skills
# Pure Functions — JavaScript/TypeScript
## 7 аксиом
1. Функция — отображение входов → выходы
2. Детерминизм (один вход → один выход)
3. Без побочных эффектов
4. Одна ответственность
5. Предусловия защищают вход
6. Постусловия защищают выход
7. Инварианты защищают процесс
---
## Формат возврата
```ts
type Result<T> = { ok: true; value: T } | { ok: false; error: string };
// Успех
return { ok: true, value: m_result };
// Ошибка
return { ok: false, error: `fn_name: описание, got: ${m_x}` };
```
---
## Шаблон функции
```ts
function f_product_PriceGet(a_product: { s_sku: string; f_price: number }): Result<number> {
// 1. ПРЕДУСЛОВИЯ
if (a_product.f_price === undefined || a_product.f_price === null) {
return { ok: false, error: 'f_product_PriceGet: missing f_price' };
}
if (typeof a_product.f_price !== 'number' || isNaN(a_product.f_price)) {
return { ok: false, error: `f_product_PriceGet: not a number, got: ${a_product.f_price}` };
}
// 2. ТЕЛО
const f_result = a_product.f_price;
// 3. ПОСТУСЛОВИЯ
if (f_result <= 0) {
return { ok: false, error: `f_product_PriceGet: must be positive, got: ${f_result}` };
}
return { ok: true, value: f_result };
}
```
---
## Предусловия
```ts
function f_math_Divide(f_a: number, f_b: number): Result<number> {
if (f_b === 0) {
return { ok: false, error: 'f_math_Divide: f_b is zero' };
}
const f_result = f_a / f_b;
if (!isFinite(f_result)) {