带有打印机&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