0

1 つのエクスポートを含むモジュールがあります。bunyanロガーを作成するのはファクトリ関数です。

export default function createLogger(options: LoggerOptions, /*...*/): Logger {
    // returns a bunyan Logger with some extra stuff for our company
}

このモジュールを他のアプリケーションで使用したいのですが、bunyanLoggerインスタンスの型情報を含めてlogger.infologger.warn、 などのインテリセンスを取得したいと考えています。

そこで、index.ts ファイルからファクトリ関数と bunyan Logger の両方をエクスポートしました。

import Logger from "bunyan";
import createLogger from "./createLogger";

export {
    createLogger,
    Logger
};

ただし、これを別のアプリケーションにインポートすると、IDE が logger のタイプを次のように認識していることがわかりますany

タイプは任意です

これは bunyan が Logger タイプをエクスポートしていないためでしょうか? それとも、私のアプリケーションでは、bunyan ではなく、カスタム パッケージのみをインストールしたためですか? カスタム パッケージのユーザーが私のパッケージbunyan の両方をインストールする必要がないことを望みます。

これを修正する方法はありますか?

4

1 に答える 1

0

私は自分で解決策を見つけました。bunyan は名前空間をエクスポートするため、index.ts を次のように変更する必要がありました。

import * as Logger from "bunyan";
import createLogger from "./createLogger";

export {
    createLogger,
    Logger
};

import * as Logger from "bunyan"bunyan からすべてをインポートし、それを「ロガー」と呼ぶ方法に注意してください。これで、すべてが期待どおりに機能します。

于 2018-10-22T11:13:36.847 に答える