我尝试在我的模型中添加一个静态方法,但如果我这样做,我就会收到此错误: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>
格尔茨
答案 0 :(得分:1)
到目前为止,我知道不可能从typescript中的intersection / union类型继承。如果是猫鼬类型定义mongoose.Model<T>
被声明为交集类型:
type ModelConstructor<T> = IModelConstructor<T> & events.EventEmitter;
有关如何在打字稿中使用mongoose的示例,您可以查看此topic on SA
但您仍然可以使用交集而不是继承来获取所需的接口,如下所示:
interface IRoleDefinition
{
myExtraProperty: string;
}
type IRole = mongoose.Model<IRoleDocument> & IRoleDefinition;
有关交集类型与继承的更多信息:github