如何使用虚拟猫鼬属性修复 TypeSrcipt 错误“对象可能是‘未定义’”

EAG*_*GER 2 mongoose typescript

当尝试计算虚拟财产模型时,我得到: 对象可能为“空” 如果可能,我宁愿不抑制打字稿的严格规则。

import { Schema, model } from "mongoose";

const SymbolSchema = new Schema({
  max: Number,
  min: Number, 

});

export interface Symbol {
  max: number;
  min: number;
}

export default model("Symbol", SymbolSchema);

SymbolSchema.virtual("diff").get(() => {
 return this ? (this?.max - this?.min ): 0
// this error : Object is possibly 'undefined'.ts(2532)
});
Run Code Online (Sandbox Code Playgroud)

也检查了this ,但是ts(2532)出现错误,那么如何解决呢?

Ana*_*oly 6

在这种情况下,您不应该this同时使用 和 箭头函数,因为您需要 this成为模型的实例,而不是整个模块:

SymbolSchema.virtual("diff").get(function(this:Symbol) {
 return this ? (this?.max - this?.min ): 0
// this error : Object is possibly 'undefined'.ts(2532)
});
Run Code Online (Sandbox Code Playgroud)