我正在为私有包创建DefinitelyTyped (我不能更改源代码),并且我找不到任何方法来实现这样的类型:
GlobalNameSpace.foo = function(arg) {}
GlobalNameSpace.foo.bar1 = function(arg) {} ;
GlobalNameSpace.foo.foo2 = function(arg) {};我试过在我的index.d.ts中使用class,但是foo不是一个class,不幸的是它是一个普通的函数。
我的尝试是:
declare namespace GlobalNameSpace {
function foo(options: any): void;
}你知道我该怎么解决这个问题吗?
发布于 2020-02-07 19:54:56
任何函数,例如:
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变量略有不同。例如,函数被提升。但在上面的例子中,它们是等价的。
https://stackoverflow.com/questions/60111649
复制相似问题