首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用流类型正确地注释Sequelize模型?

如何使用流类型正确地注释Sequelize模型?
EN

Stack Overflow用户
提问于 2019-09-13 00:15:14
回答 1查看 258关注 0票数 0

我在sequelize^4.44.3中使用flow-typed。它抱怨是因为Model没有参数。但这似乎是使用Sequelize创建模型的标准方法,那么我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-20 20:14:51

让我们take a look at the libdef吧。

如您所见,Model类的定义如下:

代码语言:javascript
复制
class Model<TAttributes, TInitAttributes = TAttributes, TPlainAttributes = TAttributes>

这里有三个类型参数,后两个是可选的,因为缺省为第一个。因此,让我们逐一分析它们:

TAttributes

这是一种对象类型,表示模型类的属性。我可以在您的屏幕截图中看到您有一个名为name的字符串字段。为了便于示例,我们假设您的Conversation中也有参与者的计数。因此,只包含这两个字段的模型的TAttributes可能如下所示:

代码语言:javascript
复制
type ConversationAttributes = {
  name: string,
  participants: number,
};

现在我们可以使用这个类型来定义我们的属性,并将它作为类型参数传递给Model类来定义我们的模型:

代码语言:javascript
复制
class Conversation extends Model<ConversationAttributes> {
  // ...

这应该可以很好地工作,但我们也有一些其他的选择:

TInitAttributes

它默认为TAttributes,因此在我们的示例中它将是ConversationAttributes,因此在本例中我们不需要指定它。

TInitAttributes是用于构造新记录的类型。如果由于某种原因,此类型与TAttributes不同,您可以在此处指定它(可能是在TAttributes上存在但在TInitAttributes上没有意义的某些计算属性的情况下)。

TPlainAttributes

它默认为TAttributes,因此在我们的示例中它将是ConversationAttributes,因此在本例中我们不需要指定它。

TPlainAttributestoJSON方法的返回类型,也是将{plain: true}作为选项传递时get方法的返回类型。如果我们的属性的“普通”序列化在某些方面与TAttributes不同,我们可以在这里指定“普通”版本的类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57910815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档