← ClaudeAtlas

pure-functionslisted

Чистые функции на JavaScript/TypeScript. Формат ok/error, предусловия/постусловия/инварианты, запрещённые конструкции, композиция. Используй при написании любых функций на JS/TS.
InExSu/claude-skills · ★ 0 · AI & Automation · score 75
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)) {