@extra2001/compute-engine
Version:
Symbolic computing and numeric evaluations for JavaScript and Node.js
11 lines (10 loc) • 484 B
TypeScript
/* 0.28.0 */
type MergeTypes<TypesArray extends any[], Res = {}> = TypesArray extends [
infer Head,
...infer Rem
] ? MergeTypes<Rem, Res & Head> : Res;
/** @internal */
export type OneOf<TypesArray extends any[], Res = never, AllProperties = MergeTypes<TypesArray>> = TypesArray extends [infer Head, ...infer Rem] ? OneOf<Rem, Res | OnlyFirst<Head, AllProperties>, AllProperties> : Res;
type OnlyFirst<F, S> = F & {
[Key in keyof Omit<S, keyof F>]?: never;
};
export {};