ライブラリの型定義ファイルを作成しようとしています。ライブラリは長い時間前にクライアントに出荷されるので、コードを変更することはできません。ファクトリ関数をエクスポートするライブラリの型スクリプト定義の作成
私は、ライブラリパッケージは、(デフォルトのエクスポートを使用して)、単一のファクトリ関数をエクスポート活字体2 *
を使用しています。ユーザーは、そのファクトリ関数を使用してlibのインスタンスを作成できます。 何私がlib.d.tsのために使用することは
declare var _createLib: (config: Object) => Promise<Lib>;
export default _createLib;
export interface Lib {
version: string;
}
され、その後、私は次のように活字体でそれを使用しようとしている:
import LibFactory from 'lib';
LibFactory(configObject).then((actualLib: Lib => {
// do some magic here
});
しかし、それは、失敗しactualLibのLibのタイプ(そのため、 ) 定義されていません。
あり、私はそれを動作させることができる2つの方法がありますが、私はこれらが適切な解決策であるかわからない:
1)のLib
import * as Lib from 'lib';
Lib.default(configObject).then((actualLib: Lib.Lib => {
});
2)一部としてインポートデフォルトからすべてをインポート名前、その他の名前をlibから指定した名前でインポートします
import {default as Factory, Lib as Lib} from 'lib';
Factory(configObject).then((actualLib: Lib=> {
});
私は何かが欠けていますか?その場合、型定義を作成して使用する方が良いでしょうか?
transpiledとき デフォルトをスロー Factory.default(configObject) があなたの 'factory.js'、ない' factory.d.ts'は、デフォルトを持っている必要があります –
関数ではないようにしかし、これは、JSに結果輸出する。私が提供したのは、文字通り 'import {factory as default as Factory、Lib as Lib} 'を' lib'から書き直すより短いです; 'この行がうまくいけば、私の答えもうまくいきます。 –