Skip to content

mergeAtoms.ts

Назначение файла

Модуль предоставляет утилиту mergeAtoms(), которая объединяет несколько атомов в один вычисляемый результат.

Общая информация

mergeAtoms() полезен, когда итоговое значение зависит от нескольких источников, а пользователю нужен компактный API вместо ручного вызова compute(() => ...). Функция принимает список атомов и явную функцию комбинации.

Концептуальная архитектура

Реализация строится поверх compute():

  1. При каждом чтении derived-атома функция читает все входные атомы.
  2. Значения собираются в массив в исходном порядке.
  3. Пользовательская computation получает распакованные значения и строит итоговый результат.

Типизация через кортеж TValues сохраняет точные типы всех аргументов.

Описание публичного API

mergeAtoms<TValues, TResult>(sources, computation, options?): Atom<TResult>

  • sources: кортеж исходных атомов.
  • computation: функция комбинирования значений.
  • options: опции вычисляемого атома.
  • Возвращает вычисляемый атом с итоговым значением TResult.

Примеры использования

ts
import { atom, mergeAtoms } from '@nrgyjs/core';

const price = atom(10);
const quantity = atom(3);

const total = mergeAtoms([price, quantity], (p, q) => p * q);

console.log(total()); // 30