繁体   English   中英

Sequelize / Typescript:参数“值”和“值”的类型不兼容

[英]Sequelize / Typescript: Types of parameters 'values' and 'values' are incompatible

我正在尝试创建一个BaseModel ,从中继承我的所有模型。 我还尝试创建一个单独的method()函数,该函数可以将我的任何模型作为参数。

这是我的示例代码:

import {
    Model, Optional
} from 'sequelize'; // v6.3.5


interface DefaultAttributes {
    id: number;
}
interface TestAttributes extends DefaultAttributes {
    field: number;
}

class BaseModel<T extends DefaultAttributes> extends Model<T, Optional<T, 'id'>> {
    static test() {
    }
}

class MyModel extends BaseModel<TestAttributes> {
}

function method<T extends typeof BaseModel>(model: T) {
    model.test();
}

method(MyModel) // <<<<<< TypeScript ERROR

我已经尝试按照文档描述的那样做所有事情。 https://sequelize.org/master/manual/typescript.html

我收到以下打字稿错误:

TS2345:“typeof MyModel”类型的参数不可分配给“typeof BaseModel”类型的参数。 参数“值”和“值”的类型不兼容。 类型 'Optional<T, "id">' 不能分配给类型 'Optional<TestAttributes, "id">'。 'Optional<T, "id">' 类型中缺少属性 'field',但在类型 'Pick<TestAttributes, "field">' 中是必需的。

请有人帮助我我做错了什么,或者我如何创建一个可以接收从BaseModel继承的任何UniqueModel的方法?

尝试这个:

import {
    Model, Optional
} from 'sequelize'; // v6.3.5

interface DefaultAttributes {
    id: number;
}
interface TestAttributes extends DefaultAttributes {
    field: number;
}

class BaseModel<T extends DefaultAttributes> extends Model<T, Optional<T, 'id'>> {
    static test() {
    }
}

class MyModel extends BaseModel<TestAttributes> {
}

function method<T extends BaseModel>(model: T) {
    model.test();
}

method(MyModel)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM