From 611e66e9985e5e795751c47693d4f81e6b12786c Mon Sep 17 00:00:00 2001 From: ts-benchmark Date: Sat, 6 Aug 2022 11:24:17 +0200 Subject: [PATCH] temp --- test/types/schema.test.ts | 24 ++++++++++++++++++++++-- types/inferschematype.d.ts | 8 ++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/test/types/schema.test.ts b/test/types/schema.test.ts index 3436f144191..d88419070ae 100644 --- a/test/types/schema.test.ts +++ b/test/types/schema.test.ts @@ -706,8 +706,28 @@ function gh12122() { const Test3 = new Schema({ test: String }, { timestamps: true }); - expectType>({} as InferSchemaType); + expectType<{ + _id: Types.ObjectId; + __v: string; + test?: string | undefined; + createdAt: Date; + updatedAt: Date; + }>({} as InferSchemaType); const Test4 = new Schema({ test: String }, { timestamps: true, versionKey: 'version' }); - expectType>({} as InferSchemaType); + expectType<{ + _id: Types.ObjectId; + version: string; + test?: string | undefined; + createdAt: Date; + updatedAt: Date; + }>({} as InferSchemaType); + + const Test5 = new Schema({ _id: String, name: String }); + + expectType<{ + _id: string; + version: string; + name?: string | undefined; + }>({} as InferSchemaType); } diff --git a/types/inferschematype.d.ts b/types/inferschematype.d.ts index 1812012c6e7..597263c10ee 100644 --- a/types/inferschematype.d.ts +++ b/types/inferschematype.d.ts @@ -67,7 +67,7 @@ declare module 'mongoose' { type ResolveSchemaOptions = Omit, 'statics' | 'methods' | 'query' | 'virtuals'>; type ApplySchemaOptions = FlatRecord<(P extends 'paths' - ? ResolveTimestamps ? O : {} >, O> + ? ResolveTimestamps, O extends Record ? O : {} >, O> : ResolveId )>; } @@ -80,9 +80,9 @@ type ResolveId = O extends { id: false } ? T : T extends { id: any } ? T : MergeType; -type Resolve_id = T extends { _id: any } +type Resolve_id = (keyof T extends '_id' ? true : false) extends true ? T - : O extends { _id: false } ? T : MergeType; + : O extends { _id: false } ? T : MergeType; type Resolve__v> = O extends { versionKey: false } ? T @@ -198,5 +198,5 @@ type ResolvePathType extends true ? any: IfEquals extends true ? any: PathValueType extends typeof SchemaType ? PathValueType['prototype'] : - PathValueType extends Record ? ObtainDocumentType : + PathValueType extends Record ? IfEquals> : unknown;