Skip to content

Commit 10f2fa7

Browse files
committed
types(schema): correctly infer Array<Schema.Types.*>
Re: #14367
1 parent 6861d8d commit 10f2fa7

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

test/types/schema.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -1424,3 +1424,21 @@ function gh14496() {
14241424
}
14251425
});
14261426
}
1427+
1428+
function gh14367() {
1429+
const UserSchema = new Schema({
1430+
counts: [Schema.Types.Number],
1431+
roles: [Schema.Types.String],
1432+
dates: [Schema.Types.Date],
1433+
flags: [Schema.Types.Boolean]
1434+
});
1435+
1436+
type IUser = InferSchemaType<typeof UserSchema>;
1437+
1438+
const x: IUser = {
1439+
counts: [12],
1440+
roles: ['test'],
1441+
dates: [new Date('2016-06-01')],
1442+
flags: [true]
1443+
};
1444+
}

types/inferschematype.d.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -198,15 +198,27 @@ type IsSchemaTypeFromBuiltinClass<T> = T extends (typeof String)
198198
? true
199199
: T extends (typeof Schema.Types.Decimal128)
200200
? true
201-
: T extends Types.ObjectId
201+
: T extends (typeof Schema.Types.String)
202202
? true
203-
: T extends Types.Decimal128
203+
: T extends (typeof Schema.Types.Number)
204204
? true
205-
: T extends Buffer
205+
: T extends (typeof Schema.Types.Date)
206206
? true
207-
: T extends (typeof Schema.Types.Mixed)
207+
: T extends (typeof Schema.Types.Boolean)
208208
? true
209-
: IfEquals<T, Schema.Types.ObjectId, true, false>;
209+
: T extends (typeof Schema.Types.Buffer)
210+
? true
211+
: T extends Types.ObjectId
212+
? true
213+
: T extends Types.Decimal128
214+
? true
215+
: T extends Buffer
216+
? true
217+
: T extends NativeDate
218+
? true
219+
: T extends (typeof Schema.Types.Mixed)
220+
? true
221+
: IfEquals<T, Schema.Types.ObjectId, true, false>;
210222

211223
/**
212224
* @summary Resolve path type by returning the corresponding type.

0 commit comments

Comments
 (0)