Say*_*man 2 node.js typescript
userSchema.pre('save', async function(done) {
if (this.isModified('pass')) {
const hashed = await Password.toHash(this.get('pass'));
this.set('pass', hashed);
}
done();
});
Run Code Online (Sandbox Code Playgroud)
我从“this”中收到以下错误:
“this”隐式具有类型“any”,因为它没有类型注释。ts(2683)
我听说问题出在方向键上,但我没有在回调函数中使用方向键?我仍然收到错误。是什么赋予了?
我还从“完成”中收到错误:
参数“done”隐式具有“any”类型。ts(7006)
这可能是 Visual Studio Code 的某种错误吗?
这不是 VS Code 或 TypeScript 中的错误。原因很简单,TypeScript 调用中没有足够的信息来确定thisMongoose 最终执行该函数时将绑定到什么。
假设您有一个名为 的类型User,您可以使用显式this类型注释来修复此问题。
userSchema.pre('save', async function(this: User, done) {
if (this.isModified('pass')) {
const hashed = await Password.toHash(this.get('pass'));
this.set('pass', hashed);
}
done();
});
Run Code Online (Sandbox Code Playgroud)
请注意,用于指定 , 类型的语法this是一种特殊语法,因为它不会在生成的 JavaScript 中发出参数:
function(this: X) {}
Run Code Online (Sandbox Code Playgroud)
编译为
function() {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3197 次 |
| 最近记录: |