clean-architecture
Version:
Utilities for implementing clean architecture using Redux
20 lines (19 loc) • 677 B
TypeScript
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 {};