diff --git a/deno/lib/helpers/util.ts b/deno/lib/helpers/util.ts index 85419b6951..af3bcef92f 100644 --- a/deno/lib/helpers/util.ts +++ b/deno/lib/helpers/util.ts @@ -104,17 +104,16 @@ export namespace objectUtil { // [k in keyof T]: undefined extends T[k] ? k : never; // }[keyof T]; - type requiredKeys = { - [k in keyof T]: undefined extends T[k] ? never : k; - }[keyof T]; + type keepRequiredKeys = { + [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 extends object // O extends keyof T = optionalKeys - > = Pick, R> & Partial; + > = keepRequiredKeys & Partial; // = { [k in O]?: T[k] } & { [k in R]: T[k] }; export type identity = T; diff --git a/src/helpers/util.ts b/src/helpers/util.ts index 85419b6951..af3bcef92f 100644 --- a/src/helpers/util.ts +++ b/src/helpers/util.ts @@ -104,17 +104,16 @@ export namespace objectUtil { // [k in keyof T]: undefined extends T[k] ? k : never; // }[keyof T]; - type requiredKeys = { - [k in keyof T]: undefined extends T[k] ? never : k; - }[keyof T]; + type keepRequiredKeys = { + [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 extends object // O extends keyof T = optionalKeys - > = Pick, R> & Partial; + > = keepRequiredKeys & Partial; // = { [k in O]?: T[k] } & { [k in R]: T[k] }; export type identity = T;