-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Description
Do you want to request a feature or report a bug?
bug
What is the current behavior?
You are unable to reach the SchemaTypeOptions
if using a pre-made interface.
If the current behavior is a bug, please provide the steps to reproduce.
export interface IUser {
username: string,
password: string,
}
type SH = IUser & Document
const SH = new Schema<SH, Model<SH>, SH>({
username: {unique: true, type: String},
password: String,
})
username: {unique: true, type: String}
Gives of an error since its notString
(notSchemaDefinitionProperty<string>
)
Also, if I would try to do something like export type SH = Omit<IUser, "username"> & Document & {username: SchemaTypeOptions<String>}
, then i would get an error that
Type '{ unique: true; type: StringConstructor; }' is not assignable to type 'SchemaDefinitionProperty<SchemaTypeOptions<String>>'. Type '{ unique: true; type: StringConstructor; }' is not assignable to type 'string'
tsconfig.json is irrelevant
What is the expected behavior?
That you are able to get to SchemaTypeOptions
, somehow.
What are the versions of Node.js, Mongoose and MongoDB you are using? Note that "latest" is not a version.
5.11.15
Edit:
Technically, you can access it, through the use of
type SH = Omit<IUser, "username"> & Document & {username: any}
But that feels like a very work around-ish way to do it. Is there a better way for this? Because i see that the type definition for the SchemaTypeOptions
having a generics type there, so I assume there was intended to be a way for it?