TS ES6-建筑图书馆-出口问题

时间:2019-02-03 15:22:27

标签: typescript ecmascript-6

我已经通过导入为“基础/核心”服务器程序构建了一个我想用于所有程序的服务器库程序包。要将其用作API,我正在index.ts中进行此操作。

import { MainServer } from './server-app'; //Want for Type

export class Server {
    private static _serverConfig = null;
    private static _mainDB = null;
    private static _supportDB = null;
    private static _mainServer: MainServer = null;  //Heres type
    private static _client = '';

    constructor(serverConfig, client: string) {
        Server._serverConfig = serverConfig;
        Server._client = client;
    }

    public static async connectAndRun() {
        //Connect then Server._mainDB = db;
        ....
    }

    public static getClientName() {
        return this._client;
    }

    public static getMainServer() {
        return Server._mainServer;
    }

    public static getMainDB() {
        return Server._mainDB;
    }

    public static getSupportDB() {
        return Server._supportDB;
    }
}

export * from './server-app'; //Need for the API to have access to all variables needed

import { MainServer } from './server-app';export * from './server-app';时出现错误,因为在server-app.ts内,我正在执行更多这样的导出:

export * from './collections/app-version.collection';

在该文件中,我有这样的东西:

import { Server } from '../index';
import { AppVersionModel } from '../models/app-version.model';

let schema: any = {
    _id: {
        type: String,
        optional: true
    },
    ...
};

export const AppVersions: Model<ServerModel> = Server.getMainDB().model('app-versions', Schema);

因此,它尝试使用Server.getMainDB()来定义服务器,因为服务器在构造服务器之前以及在连接和定义数据库之前都已在index.ts中导入,因此服务器未定义。

我了解为什么index.ts需要所有导出,但是我不明白如何在没有依赖项/导入/导出问题的情况下导出所有内容。

1 个答案:

答案 0 :(得分:0)

通过生成带有所有需要的出口申报功能/常数的index.d.ts类型文件来解决此问题。