当前位置: 首页 > 知识库问答 >
问题:

带打字稿的静态方法

闾丘炫明
2023-03-14

我试图在我的模型中添加一个静态方法,但是如果我这样做了,我得到了这个错误:< code >一个接口只能扩展一个类或另一个接口。

这是我的代码:

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> {

};

错误来自导出接口IRole扩展mongoose.Model

格莱兹


共有1个答案

甄飞飙
2023-03-14

据我所知,在打字稿中从交集/联合类型继承是不可能的。在猫鼬类型定义mongoose. Model的情况下

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

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

但您仍然可以使用交叉而不是继承来获得所需的接口,如下所示:

interface IRoleDefinition
{
    myExtraProperty: string;
}

type IRole = mongoose.Model<IRoleDocument> & IRoleDefinition; 

关于交叉类型与继承的更多信息:github

 类似资料:
  • 我正在学习Typescript,并尝试实现一个简单的React/Redux应用程序。当我使用同步操作时,它工作得很好,但问题在于异步操作。我正在学习官方的redux教程。 首先,我宣布会议状态 然后我为这个动作声明接口 我使用联合类型导出它们

  • 问题内容: 我希望能够实例化一个Typescript类,在运行时可以获取该类和构造函数的详细信息。我想编写的函数将包含类名和构造函数参数。 问题答案: 您可以尝试: 编辑 此版本可在TypeScript操场上使用,例如:

  • 我正在努力寻找 有什么不同?

  • 我有一个抽象类,它有一个抽象的泛型方法,看起来像这样 然后我有一个扩展这个抽象类的类。因为是抽象的,所以我必须在子类中实现它。 看起来像这样 返回 我得到以下错误虽然 类型'某物[]'不能分配给类型'T[]'。 我尝试了一些方法来解决这个错误,但是为了让Typescript满意,似乎还必须使子实现通用化。在我从至。 因此,我想知道如何使我的代码与TypeScript 2.4.1兼容?

  • 问题内容: 我们需要从Typescript中的node.js代码中调用REST API,并希望具有用于请求和响应的相应类型。不幸的是,给定接口的JSON包含以下字段: 我们被告知,这是由于另一端的自动化“ JSONifier”的局限性而无法更改的。我们如何设置适合于此的接口?以下显然不起作用: 问题答案: 就像JS对象一样,您可以用引号将名称引起来,如下所示:

  • 问题内容: 尝试在Typescript中实现Mongoose模型。对Google的调查只揭示了一种混合方法(结合JS和TS)。在没有JS的情况下,如何以我比较幼稚的方式实现User类呢? 希望能够不带行李的IUserModel。 问题答案: 这是我的方法: