我正在使用 Sequelize 和 typescript 。我正在使用这个定义 sequelize.d.ts
我发现使用 model.update
的问题方法,此接口(interface)接收将要更新的值作为第一个参数,但此参数有 TAttributes
类型。我认为这个论点应该是 string
类型。因为我们可以通过只发送 TAttributes 的一个子集来使用这个函数。
让我举个例子,如果我有这样的模型:
Person.attribues: {
id: number;
field1: string;
field2: number;
}
然后,在创建并持久化一个实例之后,我想要更新文件 2,我应该这样做:
Person.update(
{field2: 5},
{where: {id: 1}}
)
对于这个例子,我遇到了 typescript 错误,因为第一个参数需要
Person.attributes
类型的东西我只提供子集 {field2: 5}
我已经在 github 中做了一个问题,你怎么看?我在想好吗?
最佳答案
您应该使用 sequelize.d.ts
的属性声明具有可选的属性名称,正是因为如此。
在您的情况下,您需要执行以下操作:
interface PersonAttributes {
id?: number;
field1?: string;
field2?: number;
}
通过这样做,当您使用 update 时,它将特别允许您仅更新一个属性。
您可以查看 sequelize-tests.d.ts 中的示例以供进一步引用。
关于sequelize.Model.Update 的 Typescript 接口(interface)不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689561/