带有打印机&mongoose的静态方法会:“一个接口只能扩展一个类或另一个接口”。

我尝试添加一个静态方法到我的模型,但如果我这样做,我得到这个错误: 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>

格尔茨

据我所知,从打字稿中的交点/联合typesinheritance是不可能的。 并且在mongoosetypes定义mongoose.Model<T>情况下mongoose.Model<T>被声明为交集types:

 type ModelConstructor<T> = IModelConstructor<T> & events.EventEmitter; 

有关如何在打字稿中使用mongoose的示例,您可以在SA上查看此主题

但是你仍然可以使用交集而不是inheritance来获得你需要的接口,像这样:

 interface IRoleDefinition { myExtraProperty: string; } type IRole = mongoose.Model<IRoleDocument> & IRoleDefinition; 

有关交集typesvsinheritance的更多信息: github