UNPKG

clean-architecture

Version:

Utilities for implementing clean architecture using Redux

20 lines (19 loc) 677 B
import "minimal-polyfills/Object.fromEntries"; import type { Reducer } from "@reduxjs/toolkit"; export type UsecaseLike = { name: string; reducer: Reducer | null; }; export type UsecasesToReducer<Usecase extends UsecaseLike> = RemoveNullProperties<{ [Key in Usecase["name"]]: Extract<Usecase, { name: Key; }>["reducer"]; }>; export declare function usecasesToReducer<Usecase extends UsecaseLike>(usecasesArr: readonly Usecase[]): UsecasesToReducer<Usecase>; type NonNullPropertyNames<O> = { [Key in keyof O]: O[Key] extends null ? never : Key; }[keyof O]; type RemoveNullProperties<O> = { [Key in NonNullPropertyNames<O>]: O[Key]; }; export {};