我正在使用 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/