patronum
Version:
☄️ Effector utility library delivering modularity and convenience
18 lines (17 loc) • 1.14 kB
TypeScript
import { Store, Unit } from 'effector';
interface EitherConfig<Then, Other> {
filter: Store<boolean>;
then: Then extends Unit<any> ? Then extends Store<any> ? Then : {
error: 'only stores or generic values allowed';
} : Then;
other: Other extends Unit<any> ? Other extends Store<any> ? Other : {
error: 'only stores or generic values allowed';
} : Other;
}
export declare function either<Then, Other>(filter: Store<boolean>, then: Then extends Unit<any> ? Then extends Store<any> ? Then : {
error: 'only stores or generic values allowed';
} : Then, other: Other extends Unit<any> ? Other extends Store<any> ? Other : {
error: 'only stores or generic values allowed';
} : Other): Then extends Store<infer T> ? Other extends Store<infer O> ? Store<T | O> : Store<T | Other> : Other extends Store<infer O> ? Store<Then | O> : Store<Then | Other>;
export declare function either<Then, Other>(config: EitherConfig<Then, Other>): Then extends Store<infer T> ? Other extends Store<infer O> ? Store<T | O> : Store<T | Other> : Other extends Store<infer O> ? Store<Then | O> : Store<Then | Other>;
export {};