Node.js 财产';某物';不存在于类型';文件<;任何,{}>';猫鼬字体

Node.js 财产';某物';不存在于类型';文件<;任何,{}>';猫鼬字体,node.js,mongodb,express,mongoose,mongoose-models,Node.js,Mongodb,Express,Mongoose,Mongoose Models,这是我在应用程序中使用typescript和mongoose@5.12.6. 在这里,我尝试为mongoose实现一个方法,在我使用的方法中,this.role显示错误 Property 'role' does not exist on type 'Document<any, {}>'. { role: this.role }, ~~~~ 类型“Document”上不存在属性“role”。 {role:this.role}, ~~

这是我在应用程序中使用typescript和mongoose@5.12.6. 在这里,我尝试为mongoose实现一个方法,在我使用的方法中,this.role显示错误

Property 'role' does not exist on type 'Document<any, {}>'.

     { role: this.role },
                    ~~~~
类型“Document”上不存在属性“role”。
{role:this.role},
~~~~
我想知道这个关键字在我实现的方法中是如何起作用的,以及避免错误的方法是什么

从“mongoose”导入{文档、模型、模型、模式、类型、查询};
从“jsonwebtoken”导入jwt;
导出接口IAdmin扩展文档{
用户名:字符串;
名字:字符串;
lastname:string;
移动:字符串;
电子邮件:字符串;
密码:字符串;
角色:字符串;
}
导出接口IAdminDoc扩展IAdmin,文档{
generateAuthToken():字符串;
}
导出接口IAdminModel扩展模型{
hashPassword(密码:string):承诺;
比较密码(
inputPassword:字符串,
哈希:字符串
):承诺;
}
export const AdminSchema:Schema=新架构(
{
用户名:{
类型:字符串,
最大长度:32,
独一无二:没错,
},
流动电话:{
类型:字符串,
最大长度:11,
最小长度:11,
独一无二:没错,
要求:正确,
},
名字:{
类型:字符串,
最大长度:255,
最小长度:2,
},
姓氏:{
类型:字符串,
最大长度:255,
Minlengh:2,
},
电邮:{
类型:字符串,
最大长度:255,
Minlengh:6,
},
密码:{
类型:字符串,
最大长度:255,
最小长度:6,
要求:正确,
},
角色:{
类型:字符串,
最大长度:255,
最小长度:2,
},
},
{
时间戳:{
createdAt:“已创建”,
updatedAt:“已更新”,
},
自动索引:正确,
}
);
AdminSchema.methods.generateAuthToken=函数genAuthToken():字符串{
const adminToken=jwt.sign(
{role:this.role},
process.env.jwtPrivateKeyAdmin
);
const token=jwt.sign(
{
希德:这个,
这里是adminToken:adminToken,
},
process.env.jwtPrivateKey
);
返回令牌;
};
导出默认模型(“Admin”,AdminSchema);