与名称空间同名的导入类

时间:2019-07-17 14:13:59

标签: typescript

我使用的第三方库具有单独的@types定义,如下所示:

declare namespace Foo { /* ... */ }

declare class Foo { /* ... */ }

export = Foo;

如何在代码中导入Foo类?

此外,这种奇怪的名称重复在Typescript中是一种好习惯吗? (Here's the actual definition file I'm using)。

2 个答案:

答案 0 :(得分:1)

您的类是构造函数。当命名空间对象附加到构造函数的定义之后,它们实际上将合并,并且您将拥有类似嵌套类的内容。 如果您只想导入Foo类,那您就骗了自己。

我不能说这是否是一个好习惯,但是我用它来模拟嵌套类。

可以使用以下命令导入名称空间和类:

import * as Foo from 'foo';

答案 1 :(得分:0)

在tsconfig.json文件的编译器选项中添加"esModuleInterop": true

然后正常导入:

import TelegramBot from 'node-telegram-bot-api';

const foo = new TelegramBot();