Skip to content

Commit af2afc1

Browse files
authored
Merge pull request #14534 from Automattic/vkarpov15/gh-14367-2
types(schema): correctly infer Array<Schema.Types.*>
2 parents 3072c41 + 10f2fa7 commit af2afc1

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

test/types/schema.test.ts

Lines changed: 18 additions & 0 deletions
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

Lines changed: 17 additions & 5 deletions
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)