我尝试向我的模型添加静态方法,但如果这样做,我会收到此错误:An interface may only extend a class or another interface.
这是我的代码:
import * as mongoose from 'mongoose';
import {IPermission} from './IPermission';
export interface IRoleDocument extends mongoose.Document {
name: string,
inherit_from: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Role'
},
permissions: Array<IPermission>
};
export interface IRole extends mongoose.Model<IRoleDocument> {
};
错误来自export interface IRole extends mongoose.Model<IRoleDocument>
问候
最佳答案
据我所知,不可能从 typescript 中的交集/联合类型继承。对于 mongoose 类型定义 mongoose.Model<T>
被声明为交集类型:
type ModelConstructor<T> = IModelConstructor<T> & events.EventEmitter;
有关如何在 typescript 中使用 mongoose 的示例,您可以查看此 topic on SA
但是您仍然可以使用交集而不是继承来获取所需的接口(interface),如下所示:
interface IRoleDefinition
{
myExtraProperty: string;
}
type IRole = mongoose.Model<IRoleDocument> & IRoleDefinition;
有关交集类型与继承的更多信息:github
关于node.js - 使用 typescript 和 mongoose 的静态方法确实是 : "An interface may only extend a class or another interface.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059449/