【发布时间】:2017-04-15 07:35:52
【问题描述】:
我正在尝试为库创建类型定义文件。该库很久以前就已交付给客户,因此我无法更改其代码。
我正在使用 TypeScript 2.*
库包导出单个工厂函数(使用默认导出);用户可以使用该工厂函数创建库的实例。 我用于 lib.d.ts 的是
declare var _createLib: (config: Object) => Promise<Lib>;
export default _createLib;
export interface Lib {
version: string;
}
然后我尝试在 TypeScript 中使用它,例如:
import LibFactory from 'lib';
LibFactory(configObject).then((actualLib: Lib => {
// do some magic here
});
但是它失败了,因为没有定义Lib类型(actualLib的那个)。
有两种方法可以让它工作,但我不确定这些是正确的解决方案:
1) 从 Lib 中全部导入
import * as Lib from 'lib';
Lib.default(configObject).then((actualLib: Lib.Lib => {
});
2) 将默认值导入为某个名称,并将库中的任何其他类型命名为 import
import {default as Factory, Lib as Lib} from 'lib';
Factory(configObject).then((actualLib: Lib=> {
});
我错过了什么?在这种情况下,有没有更好的方法来创建和使用类型定义?
【问题讨论】:
标签: typescript typescript-typings