带有打字稿的模型猫鼬的接口类型

Interface type for model mongoose with typescript

我有 2 个模型

import {model, Schema, Types} from 'mongoose'
interface IResource  {
    user : Types.ObjectId | IUsers,
    type : Types.ObjectId | IResourceData,
    value : number,
    lastUpdate : number | Date,
    
const ResourceSchema = new Schema<IResource>({
    user : {type : Types.ObjectId, ref : 'users'},
    type : {type: Types.ObjectId , ref : 'resource_datas'},
    lastUpdate : {type : Date , default : Date.now},
    value : {type : Number, default : 500}
})

const Resources = model<IResource>('resources' , ResourceSchema)


interface IResourceData {
    name : string,
}
const ResourceDataSchema = new Schema<IResourceData>({
    name : {type : String},
})
const ResourceDatas = model<IResourceData>('resource_datas' , ResourceDataSchema)

当我找到资源然后填充类型时,我无法访问 type.name

const userResource = await Resources.findOne({user : _id}).populate('type')
const resourceName = userResource.type.name //Error here

VSCode 显示错误

Property 'name' does not exist on type 'ObjectId | IResourceData'.
  Property 'name' does not exist on type 'ObjectId'.

我该如何解决?

找到了

interface ITypeOfResource extends Types.ObjectId,IResourceData{} 
interface IResource  {
    user : Types.ObjectId | IUsers,
    type : ITypeOfResource 
    value : number,
    lastUpdate : number | Date,
}