typescript - Sequelize.js:Model.build 返回一个空白对象

标签 typescript sequelize.js

我正在使用 Sequelize.js (4.38.0) 和 Typescript (3.0.3)。我还安装了包 @types/sequelize(版本 4.27.25)。

我有以下无法转译的代码:

import Sequelize from 'sequelize'

const sequelize = new Sequelize('...');
const model = sequelize.define('Model', {a: Sequelize.INTEGER, b: Sequelize.INTEGER});

var instance = model.build({a: 1, b:1});
instance.save();

tsc 返回以下错误:
 Property 'save' does not exist on type '{}'.

所以出于某种原因, build 返回一个空白对象。
当我尝试使用 create 时,出现相同的错误:create 返回一个 Promise 来解析一个空白对象。

对此有什么想法吗?

最佳答案

您需要明确指定泛型类型参数,定义不会尝试推断属性或实例类型的类型。

import Sequelize, { Instance } from 'sequelize'

const sequelize = new Sequelize('...');

interface Model {
    a: number;
    b: string;
}


const model = sequelize.define<Instance<Model>, Model>('Model', {a: Sequelize.INTEGER, b: Sequelize.INTEGER});

var instance = model.build({a: 1, b:'1'}); // b must be string error is now caught by typescript 
instance.save() // ok now

关于typescript - Sequelize.js:Model.build 返回一个空白对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217671/

相关文章:

angular - 如何在 Ionic Page 中定义可选的段参数?

angular - 无法使用 tsconfig.json 缩短导入路径

javascript - 如何从目录加载随机文件

node.js - 在连接表中序列化belongsToMany附加属性

node.js - Sequelize 通过关联创建

javascript - 以一对一的关系插入数据belongsTo Sequelize

angular - 为什么 TypeScript 在实现时允许重复组件?

intellij-idea - 如何在 IntelliJ IDEA 中为 Ionic v2 设置 Typescript

node.js - 使用 sequelize 和 node js 自动生成 CRUD

node.js - CentOS + Node.js (v8.15.0) + Sequelize (v4.38.0) 到 Azure SQL 间歇性连接问题