diff --git a/src/type/module/infer.ts b/src/type/module/infer.ts index 8c8708d20..aa0bca46a 100644 --- a/src/type/module/infer.ts +++ b/src/type/module/infer.ts @@ -92,9 +92,15 @@ type TInferIntersect = { [Key in keyof Properties]: Properties[Key] extends TReadonly ? (Properties[Key] extends TOptional ? Key : never) : never }[keyof Properties] -type ReadonlyPropertyKeys = { [Key in keyof Source]: Source[Key] extends TReadonly ? (Source[Key] extends TOptional ? never : Key) : never }[keyof Source] -type OptionalPropertyKeys = { [Key in keyof Source]: Source[Key] extends TOptional ? (Source[Key] extends TReadonly ? never : Key) : never }[keyof Source] +type ReadonlyOptionalPropertyKeys = { + [Key in keyof Properties]: Properties[Key] extends TReadonly ? (Properties[Key] extends TOptional ? Key : never) : never +}[keyof Properties] +type ReadonlyPropertyKeys = { + [Key in keyof Source]: Source[Key] extends TReadonly ? (Source[Key] extends TOptional ? never : Key) : never +}[keyof Source] +type OptionalPropertyKeys = { + [Key in keyof Source]: Source[Key] extends TOptional ? (Source[Key] extends TReadonly ? never : Key) : never +}[keyof Source] type RequiredPropertyKeys = keyof Omit | ReadonlyPropertyKeys | OptionalPropertyKeys> // prettier-ignore type InferPropertiesWithModifiers> = Evaluate<( @@ -149,6 +155,7 @@ type TInferUnion = ( + Type extends TOptional ? TInfer | undefined : Type extends TArray ? TInferArray : Type extends TAsyncIterator ? TInferAsyncIterator : Type extends TConstructor ? TInferConstructor :