0
我正在嘗試爲庫創建類型定義文件。該庫很早以前就已發佈給客戶,所以我無法更改其代碼。爲導出工廠函數的庫創建TypeScript類型定義
我使用打字稿2 *
庫包導出(使用默認的導出)一個工廠函數;用戶可以使用該工廠函數創建庫的實例。 我使用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的) 沒有定義。
有兩種方法,我可以讓它工作,但我不知道這些是妥善的解決辦法:
1)從庫
import * as Lib from 'lib';
Lib.default(configObject).then((actualLib: Lib.Lib => {
});
2)導入默認一些導入所有名稱和任何其他類型的名稱導入
import {default as Factory, Lib as Lib} from 'lib';
Factory(configObject).then((actualLib: Lib=> {
});
我錯過了什麼?在這種情況下是否有更好的方式來創建和使用類型定義?
然而transpiled當這個結果JS像 Factory.default(configObject) 會拋出 默認是不是一個函數 –
你'factory.js',不'factory.d.ts',必須有默認出口。我所提供的,只是從'lib'中簡單重寫'import {default,默認爲Factory,Lib as Lib};'如果這條線有效,我的答案也會起作用。 –