To use Mongoose with TypeScript, we define interfaces for our schemas.
For instance, we write
export interface IUser extends mongoose.Document {
name: string;
somethingElse?: number;
}
export const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
somethingElse: Number,
});
const User = mongoose.model<IUser>("User", UserSchema);
export default User;
to define the IUser interface that inherits from the mongoose.Document interface.
Then we create the UserSchema with mongoose.Schema with a few fields in the object we call it with.
Next, we call model to map the 'User‘ table to UserSchema.
We set the type of the fields to match the IUser with the generic type argument.