在Typescript中实现模块时,我相信可以导入使用旧的export =语法导出的各种不同的导出(例如类,接口,变量和枚举)。
但是当我使用环境模块尝试此操作时,编译器(1.8.10)似乎忽略了导入。
声明文件:
Epreuve
主档案
//Module declaration
declare module "foo" {
interface barProc {
(): any;
}
//Note: if I use the function equivalent to the interface this works ok.
function worksOk(): any;
export = barProc;
}
在这种情况下,编译器抱怨myFunc是一个未知标识符,导入行不会出现在输出js文件中。
注意:在图示的情况下,为了简单起见,我没有在界面中添加任何其他成员。然而,接口的原因是我正在建模的JavaScript库在函数上有成员。
我做错了什么,或者有解决方法吗?
答案 0 :(得分:1)
barProc是一个接口,因此是一种类型。它不是该类型的变量。您可以将其导出,并在其他地方将其用作类型,但不能将其用作可调用函数,如示例所示。
您的示例大致相当于:
interface barProc {
(): any;
}
barProc();
就这样说,这显然是错误的。你想要的更像是:
interface barProc {
(): any;
}
var myFunc: barProc;
myFunc();
返回作为模块,看起来像:
declare module "foo" {
interface barProc {
(): any;
}
var myFunc: barProc;
export = myFunc;
}
// Elsewhere:
import myFunc = require("foo");
myFunc();
我认为应该做你想做的事。