如何使用 flow-typed 正确注释 Sequelize 模型?
How can I properly annotate a Sequelize model with flow-typed?
我正在使用 flow-typed
和 sequelize^4.44.3
。它在抱怨,因为 Model
没有参数。但这似乎是使用 Sequelize 创建模型的标准方法,所以我做错了什么?
如您所见,Model
class 定义为:
class Model<TAttributes, TInitAttributes = TAttributes, TPlainAttributes = TAttributes>
这里有三个类型参数,后两个是可选的,因为默认是第一个。因此,让我们将它们一一分解:
TA属性
这是一个表示模型属性的对象类型 class。我可以在您的屏幕截图中看到您有一个名为 name
的字符串字段。为了示例起见,我们假设您的 Conversation
中也有一些参与者。因此,对于仅包含这两个字段的模型,您的 TAttributes
可能如下所示:
type ConversationAttributes = {
name: string,
participants: number,
};
现在我们可以将定义我们属性的类型作为类型参数传递给 Model
class 来定义我们的模型:
class Conversation extends Model<ConversationAttributes> {
// ...
这应该可以正常工作,但我们还有一些其他选择:
TInitAttributes
这默认为 TAttributes
,因此在我们的示例中它将是 ConversationAttributes
,因此在这种情况下我们不需要指定它。
TInitAttributes
是用于构造新记录的类型。如果由于某种原因此类型与 TAttributes
不同,您可以在此处指定它(可能在 TAttributes
上存在但在 [= 上没有意义的某些计算 属性 的情况下20=].
TPlainAttributes
这默认为 TAttributes
,因此在我们的示例中它将是 ConversationAttributes
,因此在这种情况下我们不需要指定它。
TPlainAttributes
是toJSON
方法的return类型,传递[=29=时也是get
方法的return类型] 作为选项。如果我们属性的 "plain" 序列化在某些方面不同于 TAttributes
,我们可以在此处指定 "plain" 版本的类型。
我正在使用 flow-typed
和 sequelize^4.44.3
。它在抱怨,因为 Model
没有参数。但这似乎是使用 Sequelize 创建模型的标准方法,所以我做错了什么?
如您所见,Model
class 定义为:
class Model<TAttributes, TInitAttributes = TAttributes, TPlainAttributes = TAttributes>
这里有三个类型参数,后两个是可选的,因为默认是第一个。因此,让我们将它们一一分解:
TA属性
这是一个表示模型属性的对象类型 class。我可以在您的屏幕截图中看到您有一个名为 name
的字符串字段。为了示例起见,我们假设您的 Conversation
中也有一些参与者。因此,对于仅包含这两个字段的模型,您的 TAttributes
可能如下所示:
type ConversationAttributes = {
name: string,
participants: number,
};
现在我们可以将定义我们属性的类型作为类型参数传递给 Model
class 来定义我们的模型:
class Conversation extends Model<ConversationAttributes> {
// ...
这应该可以正常工作,但我们还有一些其他选择:
TInitAttributes
这默认为 TAttributes
,因此在我们的示例中它将是 ConversationAttributes
,因此在这种情况下我们不需要指定它。
TInitAttributes
是用于构造新记录的类型。如果由于某种原因此类型与 TAttributes
不同,您可以在此处指定它(可能在 TAttributes
上存在但在 [= 上没有意义的某些计算 属性 的情况下20=].
TPlainAttributes
这默认为 TAttributes
,因此在我们的示例中它将是 ConversationAttributes
,因此在这种情况下我们不需要指定它。
TPlainAttributes
是toJSON
方法的return类型,传递[=29=时也是get
方法的return类型] 作为选项。如果我们属性的 "plain" 序列化在某些方面不同于 TAttributes
,我们可以在此处指定 "plain" 版本的类型。