Skip to content

Commit b83217c

Browse files
authored
Merge pull request #15517 from Automattic/vkarpov15/gh-15516
types(schema): use user-provided THydratedDocumentType as context for virtual get() and set()
2 parents 54a9b69 + 7421c27 commit b83217c

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

test/types/schema.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,3 +1841,17 @@ function gh15479() {
18411841
return obj.testField;
18421842
}
18431843
}
1844+
1845+
function gh15516() {
1846+
interface IUser {
1847+
name: string;
1848+
}
1849+
type HydratedUserDoc = HydratedDocument<IUser & { customProperty: number, myVirtual: number }>;
1850+
const schema = new Schema<IUser, Model<IUser>, {}, {}, { myVirtual: number }, {}, DefaultSchemaOptions, any, HydratedUserDoc>({
1851+
name: String
1852+
});
1853+
1854+
schema.virtual('myVirtual').get(function() {
1855+
expectType<HydratedUserDoc>(this);
1856+
});
1857+
}

types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ declare module 'mongoose' {
519519
toJSONSchema(options?: { useBsonType?: boolean }): Record<string, any>;
520520

521521
/** Creates a virtual type with the given name. */
522-
virtual<T = HydratedDocument<DocType, TVirtuals & TInstanceMethods, TQueryHelpers>>(
522+
virtual<T = THydratedDocumentType>(
523523
name: keyof TVirtuals | string,
524524
options?: VirtualTypeOptions<T, DocType>
525525
): VirtualType<T>;

0 commit comments

Comments
 (0)