我正在为Sequelize构建流式定义,并且遇到了流式的declare
部分的小问题。
具体而言,Sequelize通常被定义为:
class Sequelize {
....
}
Sequelize.DataTypes = DataTypes;
我可以为其中一个生成流式声明,但不能同时生成两个流式声明。当我将DataTypes放在一个类中时,它们是实例化范围内不可用的成员变量。
declare export default class sequelize$Class {
constructor(...);
DataTypes: sequelize$DataTypes;
}
declare var DataTypes: sequelize$DataTypes;
declare export var DataTypes;
因为我需要编写看起来像的代码:
const db = new Sequelize(...)
const MyModel = db.define(... { email: { type: Sequelize.DataTypes.STRING } })
目前我已经把这个放到了位置:
import Sequelize, { DataTypes } from "sequelize";
const sequelize: sequelize$Sequelize = ((new Sequelize(settings.database, { logging: false })): any);
必须有更好的方法。
答案 0 :(得分:1)
我要试一试,让我知道它是否可以帮助你:)
您可以像这样声明续集定义
declare module 'sequelize' {
declare type sequelize$DataTypes = {
STRING: string
}
declare export default class sequelize$Class {
static DataTypes: sequelize$DataTypes;
constructor(database: Object, options: Object): void;
}
declare export var DataTypes: sequelize$DataTypes;
}
这为您提供了默认导出以及命名导出。我预先定义了sequelize $ DataTypes,将它作为静态属性传递给sequelize $ Class,并将其导出。