让我们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 方法的返回类型,也是get 方法在传递{plain: true} 作为选项时的返回类型。如果我们的属性的“普通”序列化在某些方面与TAttributes 不同,我们可以在此处指定“普通”版本的类型。