node.js - 在 sequelize getter 和 setter 函数中使用时出现 "Argument of type is not assignable to parameter of type"错误

标签 node.js typescript sequelize.js nestjs sequelize-typescript

我正在尝试在本地运行基于 NodeJS 和 NestJS 的解决方案。我的主要问题是一大堆这样的错误消息......

error TS2345: Argument of type '"totalShares"' is not assignable to parameter of type '"get" | "set" | "isNewRecord" | "sequelize" | "where" | "getDataValue" | "setDataValue" | "setAttributes" | "changed" | "previous" | "save" | "reload" | "validate" | "update" | ... 10 more ... | "hasHooks"'.

117 return this.getDataValue('totalShares') || 0;


我从模型文件 (typescript-sequelize) 中得到这些错误,只要在 @Column 装饰器下有自定义的 getter 和/或 setter。所以从这样的片段
@Column({
    get(): number {
      return this.getDataValue('totalShares') || 0;
    },
  })
  totalShares: number;
从语法上看,这对我来说很好。我的第一个直觉是,这可能是由包版本不匹配引起的,但经过一些轻量版本检查后,我似乎不再可能出现这种情况。
可能是什么问题?

最佳答案

what's shown in the docs 看来,getter 和 setter 应该在装饰器之外完成,所以它应该是这样的:

@Column
get totalShares(): number {
  return this.getDataValue('totalShares') || 0;
}

set totalShares(shares: number) {
  this.setDataValue('totalShares', shares);
}

关于node.js - 在 sequelize getter 和 setter 函数中使用时出现 "Argument of type is not assignable to parameter of type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65430950/

相关文章:

javascript - 为 Express 和 Nginx 配置 HTTPS

node.js - 与 Monaca 聊天应用程序

javascript - 能否动态地将匿名方法(函数)变成命名方法?

javascript - Node js。 Sequelize 交易

angularjs - 如何传递客户端数据以表示调用远程 url 并获取响应

Typescript 无法识别我的声明文件中声明的模块 (*.svg)

angular - 通过组件属性为您的 css 类添加动态命名空间对性能/加载是否不利?

javascript - Angular 嵌套 *ngFor

mysql - 在 Sequelize 中返回具有更新关联的对象

javascript - 要求 sequilize 模块在某些快速应用程序文件中返回未定义