TypeScript:DefinitelyTyped 中的子函数

TypeScript: Subfunction in DefinitelyTyped

我正在为私有包创建 DefinitelyTyped(我无法更改源代码),但我找不到任何方法来实现这样的类型:

  GlobalNameSpace.foo = function(arg) {} 
  GlobalNameSpace.foo.bar1 = function(arg) {} ;
  GlobalNameSpace.foo.foo2 = function(arg) {};

我试过在我的 index.d.ts 中使用 classfoo 不是 class 遗憾的是这是一个正常的功能。

我的尝试:

declare namespace GlobalNameSpace {
    function foo(options: any): void;
}

知道如何解决这个问题吗?

任意函数,例如:

function foo(options: any): void;

可以表示为可调用对象,像这样:

const foo: {
    (options: any): void;
}

另外,任何对象都可以有额外的属性。这些属性也可以调用,因此以下是完全有效的:

declare namespace GlobalNameSpace {
    const foo: {
        (options: any): void;

        bar1: { (arg: any): void };
        foo2: { (arg: any): void };
    }
}

请注意,const 变量与 function 略有不同。例如,函数被提升。但在上面的例子中,它们是等价的。