Ada*_*dam 5 javascript sequelize.js typescript
我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)
我已经尝试按照文档描述的那样做所有事情。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">' 中是必需的。
请有人帮我做错了什么,或者我如何创建一个可以接收任何UniqueModel继承自的方法BaseModel?
小智 0
尝试这个:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |