打字稿和静态方法mongoose做:"接口只能扩展一个类或另一个接口。"

时间:2016-08-20 23:01:08

标签: node.js mongodb typescript 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>

格尔茨

1 个答案:

答案 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