【发布时间】:2018-07-24 07:33:01
【问题描述】:
我正在开发一个 TypeScript 项目(用于浏览器),我们在该项目中使用了一个第三方库,其中包含来自来自 DeveloplyTyped 的类型定义。在库的类型定义中,它的类声明如下:
declare namespace foo {
export class Bar { ... }
export class Baz { ... }
}
但是,库的实际实现将类放在全局范围内,这样它们就可以被Bar 和Baz 引用。因此,使用foo.Bar 将编译,但在运行时不起作用。
为了让它工作,我想以某种方式将foo 的所有导出都带入全局命名空间。我找不到任何明显的方法来做到这一点,所以到目前为止我最好的尝试是制作一个环境声明文件说
declare type Bar = foo.Bar;
declare const Bar: typeof foo.Bar;
并为foo 中的每个导出类重复。这允许我实例化类,将其用作类型,并调用它可能具有的任何静态函数,但是为所有导出的类型声明相同的名称两次并不理想。实现相同目标的更短的方法似乎是
declare class Bar extends foo.Bar {}
但现在我在不必要地扩展课程,意图不明确。
有没有更好的方法将foo 的导出类型别名/提取为全局变量?
【问题讨论】:
-
请问是哪个包?
标签: typescript definitelytyped