从Typescript声明文件中的模块导出默认值

从Typescript声明文件中的模块导出默认值,typescript,Typescript,假设我有一个声明文件foo.d.ts: declare namespace foo { interface Bar { (): void; } } declare var foo: foo.Bar; export default foo; 如果我编译这个: import Foo from './foo'; Foo(); 结果是: "use strict"; var foo_1 = require('./foo'); foo_1["default"](); 但是,此代码不会

假设我有一个声明文件
foo.d.ts

declare namespace foo {
  interface Bar {
    (): void;
  }
}

declare var foo: foo.Bar;
export default foo;
如果我编译这个:

import Foo from './foo';
Foo();
结果是:

"use strict";
var foo_1 = require('./foo');
foo_1["default"]();
但是,此代码不会运行,因为
foo_1
是一个函数,并且没有属性
default
。如何将输出设置为
foo_1()
而不是
foo_1[“default”]()

export = foo;
而不是导出默认的foo在声明文件中

并在导入时使用
import require

import Foo = require('./foo');
是typescript中的特殊语法,用于处理具有导出的节点模块,如

module.exports = function someFunction() {}

您是否在tsconfig.json文件中配置了模块?在您的情况下,您可能不应该这样做。不,这是一个库附带的声明文件。您不应该在同一个文件中有
declare namespace foo{}
declare var foo
。尝试重命名其中一个。