Skip to content

Commit

Permalink
perf: speed up addQuestionMarks
Browse files Browse the repository at this point in the history
  • Loading branch information
Andarist committed Jul 31, 2023
1 parent 78a4090 commit 0483a8e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
11 changes: 5 additions & 6 deletions deno/lib/helpers/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,16 @@ export namespace objectUtil {
// [k in keyof T]: undefined extends T[k] ? k : never;
// }[keyof T];

type requiredKeys<T extends object> = {
[k in keyof T]: undefined extends T[k] ? never : k;
}[keyof T];
type keepRequiredKeys<T extends object> = {
[k in keyof T as undefined extends T[k] ? never : k]-?: T[k];
};

// type alkjsdf = addQuestionMarks<{ a: any }>;

export type addQuestionMarks<
T extends object,
R extends keyof T = requiredKeys<T>
T extends object
// O extends keyof T = optionalKeys<T>
> = Pick<Required<T>, R> & Partial<T>;
> = keepRequiredKeys<T> & Partial<T>;
// = { [k in O]?: T[k] } & { [k in R]: T[k] };

export type identity<T> = T;
Expand Down
11 changes: 5 additions & 6 deletions src/helpers/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,16 @@ export namespace objectUtil {
// [k in keyof T]: undefined extends T[k] ? k : never;
// }[keyof T];

type requiredKeys<T extends object> = {
[k in keyof T]: undefined extends T[k] ? never : k;
}[keyof T];
type keepRequiredKeys<T extends object> = {
[k in keyof T as undefined extends T[k] ? never : k]-?: T[k];
};

// type alkjsdf = addQuestionMarks<{ a: any }>;

export type addQuestionMarks<
T extends object,
R extends keyof T = requiredKeys<T>
T extends object
// O extends keyof T = optionalKeys<T>
> = Pick<Required<T>, R> & Partial<T>;
> = keepRequiredKeys<T> & Partial<T>;
// = { [k in O]?: T[k] } & { [k in R]: T[k] };

export type identity<T> = T;
Expand Down

0 comments on commit 0483a8e

Please sign in to comment.