具有 class 和静态成员的流类型声明模块的类型语法
Type syntax for flow type declared module with class and static members
我正在为 Sequelize 构建流类型定义,运行 流类型的 declare
部分出现了一个小问题。
具体Sequelize一般定义为:
class Sequelize {
....
}
Sequelize.DataTypes = DataTypes;
我可以为其中之一生成流类型声明,但不能同时为两者生成流类型声明。当我将 DataTypes 放在 class 中时,它们是实例化范围不可用的成员变量。
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);
必须有更好的方法。
我要试一试,如果对您有帮助,请告诉我:)
你可以像这样声明sequelize定义
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,然后将其导出。
我正在为 Sequelize 构建流类型定义,运行 流类型的 declare
部分出现了一个小问题。
具体Sequelize一般定义为:
class Sequelize {
....
}
Sequelize.DataTypes = DataTypes;
我可以为其中之一生成流类型声明,但不能同时为两者生成流类型声明。当我将 DataTypes 放在 class 中时,它们是实例化范围不可用的成员变量。
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);
必须有更好的方法。
我要试一试,如果对您有帮助,请告诉我:)
你可以像这样声明sequelize定义
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,然后将其导出。