i always guessed this was because of js files being imported inside ts files. Thus even if mongoose has it's types, its not begin recognized.
While exporting I made this changed and everything worked :
export default /** @type {import("mongoose").Model<import("mongoose").Document>} */ (User);
This is my full file :
import mongoose from "mongoose" const userSchema = new mongoose.Schema({ username: { type: String, required: [true, "Please provide a username" ], unique: true }, email: { type: String, required: [true, "please provide email"], unique: true }, password: { type: String, required: [true, "Please provide a password"] }, isVerified: { type: Boolean, default: false }, isAdmin: { type: Boolean, default: false }, forgotPasswordToken: String, forgotPasswordTokenExpiry: Date, verifyToken: String, verifyTokenExpiry: Date }) const User = mongoose.models.User || mongoose.model("User", userSchema) export default /** @type {import("mongoose").Model<import("mongoose").Document>} */ (User);