@redhare/lowcode-types
Version:
Types for Ali lowCode engine
19 lines (18 loc) • 737 B
TypeScript
declare type FilterOptional<T> = Pick<T, Exclude<{
[K in keyof T]: T extends Record<K, T[K]> ? K : never;
}[keyof T], undefined>>;
declare type FilterNotOptional<T> = Pick<T, Exclude<{
[K in keyof T]: T extends Record<K, T[K]> ? never : K;
}[keyof T], undefined>>;
declare type PartialEither<T, K extends keyof any> = {
[P in Exclude<keyof FilterOptional<T>, K>]-?: T[P];
} & {
[P in Exclude<keyof FilterNotOptional<T>, K>]?: T[P];
} & {
[P in Extract<keyof T, K>]?: undefined;
};
declare type Object = {
[name: string]: any;
};
export declare type EitherOr<O extends Object, L extends string, R extends string> = (PartialEither<Pick<O, L | R>, L> | PartialEither<Pick<O, L | R>, R>) & Omit<O, L | R>;
export {};