I am a bit late but i think this is good approach (source: https://medium.com/@agentwhs/complete-guide-for-typescript-for-mongoose-for-node-js-8cc0a7e470c1)
mongoose Schema:
gender: {
type: Number,
enum: [0, 1],
default: 0,
required: true
},
TS enum:
enum Gender {
Male = 1,
Female = 0
}
Then use of virtual or method:
// Virtuals
UserSchema.virtual("fullName").get(function(this: UserBaseDocument) {
return this.firstName + this.lastName
})
// Methods
UserSchema.methods.getGender = function(this: UserBaseDocument) {
return this.gender > 0 ? "Male" : "Female"
}