@rbxts/silo
Version:
State management
18 lines (17 loc) • 578 B
TypeScript
import { Silo } from "./types";
declare type SiloMap<T> = {
[K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M> : never;
};
declare type CombinedState<T> = {
[K in keyof T]: T[K] extends Silo<infer S, infer M> ? Silo<S, M>["initialState"] : never;
};
declare type CombinedSilo<S extends SiloMap<S>> = Silo<CombinedState<S>, {}> & {
all: SiloMap<S>;
};
/**
* Combine silos.
* @param silos Silos to combine
* @returns Combined silos
*/
export declare function combineSilos<S extends SiloMap<S>>(silos: S): CombinedSilo<S>;
export {};