gpt4 book ai didi

javascript - Sequelize/ typescript : Types of parameters 'values' and 'values' are incompatible

转载 作者:行者123 更新时间:2023-12-03 17:10:15 26 4
gpt4 key购买 nike

我正在尝试创建一个 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
我收到以下 TypeScript 错误:

TS2345: Argument of type 'typeof MyModel' is not assignable to parameter of type 'typeof BaseModel'.   Types of parameters 'values' and 'values' are incompatible.     Type 'Optional<T, "id">' is not assignable to type 'Optional<TestAttributes, "id">'.       Property 'field' is missing in type 'Optional<T, "id">' but required in type 'Pick<TestAttributes, "field">'.


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

最佳答案

尝试这个:

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)

关于javascript - Sequelize/ typescript : Types of parameters 'values' and 'values' are incompatible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64893597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com