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

发布于 2019-09-20 20:14:51
让我们take a look at the libdef吧。
如您所见,Model类的定义如下:
class Model<TAttributes, TInitAttributes = TAttributes, TPlainAttributes = TAttributes>这里有三个类型参数,后两个是可选的,因为缺省为第一个。因此,让我们逐一分析它们:
TAttributes
这是一种对象类型,表示模型类的属性。我可以在您的屏幕截图中看到您有一个名为name的字符串字段。为了便于示例,我们假设您的Conversation中也有参与者的计数。因此,只包含这两个字段的模型的TAttributes可能如下所示:
type ConversationAttributes = {
name: string,
participants: number,
};现在我们可以使用这个类型来定义我们的属性,并将它作为类型参数传递给Model类来定义我们的模型:
class Conversation extends Model<ConversationAttributes> {
// ...这应该可以很好地工作,但我们也有一些其他的选择:
TInitAttributes
它默认为TAttributes,因此在我们的示例中它将是ConversationAttributes,因此在本例中我们不需要指定它。
TInitAttributes是用于构造新记录的类型。如果由于某种原因,此类型与TAttributes不同,您可以在此处指定它(可能是在TAttributes上存在但在TInitAttributes上没有意义的某些计算属性的情况下)。
TPlainAttributes
它默认为TAttributes,因此在我们的示例中它将是ConversationAttributes,因此在本例中我们不需要指定它。
TPlainAttributes是toJSON方法的返回类型,也是将{plain: true}作为选项传递时get方法的返回类型。如果我们的属性的“普通”序列化在某些方面与TAttributes不同,我们可以在这里指定“普通”版本的类型。
https://stackoverflow.com/questions/57910815
复制相似问题