首页 > 解决方案 > 在 sequelize getter 和 setter 函数中使用“类型参数不可分配给类型参数”错误

问题描述

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

错误 TS2345:“totalShares”类型的参数不可分配给“get”类型的参数 | "设置" | "isNewRecord" | “续集” | “哪里” | “获取数据值” | “设置数据值” | “设置属性” | “改变” | "以前的" | “保存” | “重新加载” | “验证” | “更新” | ... 10 更多 ... | “hasHooks”。

117 返回 this.getDataValue('totalShares') || 0;

我从模型文件(typescript-sequelize)中得到这些错误,只要@Column 装饰器下有一个自定义 getter 和/或 setter。所以从像这样的片段中

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

从语法上看,这对我来说很好。我的第一个直觉是,这可能是由于包版本不匹配造成的,但经过一些简单的版本检查后,我觉得这不太可能了。

可能是什么问题?

标签: node.jstypescriptsequelize.jsnestjssequelize-typescript

解决方案


docs 中显示的内容来看,getter 和 setter 看起来应该在装饰器之外完成,所以它应该如下所示:

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

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

推荐阅读