@dulysse1/better-node
Version:
Improve Node types & add object properties
34 lines (28 loc) • 780 B
TypeScript
/// <reference path="operators.d.ts" />
/// <reference path="_union.d.ts" />
declare type _Object<T = any> = {
[key: string]: T;
[key: number]: T;
[key: symbol]: T;
};
declare type _Merge<O1 extends _Object, O2 extends _Object> = {
[K in keyof O1 | keyof O2]: _Equal<
O1[_Satisfy<K, keyof _Object>],
unknown
> extends true
? O2[_Satisfy<K, keyof _Object>]
: O1[_Satisfy<K, keyof _Object>];
};
declare type _Required<O extends _Object> = {
[K in keyof O]-?: O[_Satisfy<K, keyof _Object>];
};
declare type _Partial<O extends _Object> = {
[K in keyof O]?: O[_Satisfy<K, keyof _Object>];
};
declare type _Omit<
O extends _Object,
K extends keyof _Object,
E = _UnionExclude<keyof O, K>
> = {
[K in _Satisfy<E, keyof _Object>]: O[_Satisfy<K, keyof _Object>];
};