我正在使用 mysql/mariadb 创建一个包含 Sequelize 的列。查看文档,可以在另一列之后创建此列,只需在第三个参数中定义 after 属性,但是当我使用打字稿时,它给了我以下类型错误
Object literal may only specify known properties, and 'after' does not exist in type 'ModelAttributeColumnOptions<Model<any, any>> | AbstractDataTypeConstructor | AbstractDataType'
迁移如下:
import { QueryInterface } from "sequelize"
import { DataType } from "sequelize-typescript"
module.exports = {
async up(queryInterface: QueryInterface) {
queryInterface.addColumn('Contacts', 'responsible', {
type: DataType.JSON,
after: 'number'
})
},
}
我尝试创建一个类型来续集,但失败了。我尝试过的类型如下,我知道这是非常错误的,我是这个“打字”的新手
declare module 'sequelize/types/lib/query-interface' {
interface QueryInterfaceOptions {
after?: string
}
}
对于任何正在寻找相同内容的人,我已经找到了解决方案
import { DataType, ModelAttributeColumnOptions, QueryInterface, QueryInterfaceOptions, TableName } from 'sequelize'
declare module 'sequelize' {
interface QueryInterface {
addColumn(table: TableName, key: string, attribute: AddColumnOptions | DataType, options?: QueryInterfaceOptions): Promise<void>
}
interface AddColumnOptions extends ModelAttributeColumnOptions {
after?: string
}
}