fewer
Version:
A minimal ORM for Node.js.
17 lines (16 loc) • 587 B
TypeScript
declare type Undefined<T> = T extends undefined ? undefined : never;
declare type UndefinedProperties<T> = {
[K in keyof T]: Undefined<T[K]> extends never ? never : K;
}[keyof T];
declare type NotUndefinedProperties<T> = {
[K in keyof T]: Undefined<T[K]> extends never ? K : never;
}[keyof T];
declare type Merge<T extends object> = {
[K in keyof T]: T[K];
};
export declare type WithUndefinedPropertiesAsOptionals<T> = Merge<{
[K in keyof T & UndefinedProperties<T>]?: Exclude<T[K], undefined>;
} & {
[K in keyof T & NotUndefinedProperties<T>]: T[K];
}>;
export {};