Javascript TypeScript:类型的参数不可赋值

Javascript TypeScript:类型的参数不可赋值,javascript,typescript,mongoose,Javascript,Typescript,Mongoose,TypeScript新手在此迁移现有项目。我们有Mongoose模型,它看起来类似于下面的代码片段,并使用discriminatorKey属性: const task = new mongoose.Schema({ name: { type: String }, notes: { type: String } }, { discriminatorKey: 'type', toObject: { virtuals: true }, toJSO

TypeScript新手在此迁移现有项目。我们有Mongoose模型,它看起来类似于下面的代码片段,并使用
discriminatorKey
属性:

const task = new mongoose.Schema({
  name: {
    type: String
  },
  notes: {
    type: String
  }
}, {
  discriminatorKey: 'type',
  toObject: {
    virtuals: true
  },
  toJSON: {
    virtuals: true
  }
});
这在编译过程中给了我以下错误:

src/models/task.ts(12,3):错误TS2345:类型为“{discriminatorKey:string;}”的参数不能分配给类型为“SchemaOptions”的参数。
Object literal只能指定已知的属性,并且类型“SchemaOptions”中不存在“discriminatorKey”。
我正在使用这些@types定义,这似乎是最新的定义:

“@types/mongoose”:“^4.7.8”
我理解,类型定义没有指定
鉴别器键
(这在查看
节点模块/@types/mongoose/index.d.ts
时明显可见),但我不理解(a)为什么(疏忽?不同版本?其他原因?),(b)如何避免此错误


(c) 附加问题:
@types
定义的版本控制策略对我来说仍然不清楚。我假设类型定义应该与实际库的版本匹配,但是,通常似乎没有匹配的版本——例如,我们使用的是
express
version。4.13.4,但没有匹配的
@types/express
版本可用。在这种情况下,最好的做法是什么?

我有点晚了,但我刚刚遇到了同样的问题。我正在使用
@types/mongoose
4.7.12
,它还没有更新

作为临时解决方案,当您遇到此类问题时,您有两种选择:


文本将接受过多的属性检查。在此页面上搜索术语:谢谢!与此同时,我的技能也有所提高,但这仍然是对所有可用选项的一个很好的总结!当然,非常感谢您对打字的改进!仍然面临着。。@types/mongoose:“^5.5.8”