gpt4 book ai didi

javascript - 具有类和静态成员的流类型声明模块的类型语法

转载 作者:行者123 更新时间:2023-12-03 04:21:11 25 4
gpt4 key购买 nike

我正在为 Sequelize 构建流类型定义,但在流类型的 declare 部分遇到了一个小问题。

具体Sequelize一般定义为:

class Sequelize {
....
}

Sequelize.DataTypes = DataTypes;

我可以为其中之一生成流类型声明,但不能同时为两者生成流类型声明。当我将 DataType 放入类中时,它们是不可用于实例化范围的成员变量。

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,然后将其导出。

关于javascript - 具有类和静态成员的流类型声明模块的类型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940056/

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