TypeScript:DefinitelyTyped 中的子函数
TypeScript: Subfunction in DefinitelyTyped
我正在为私有包创建 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;
}
知道如何解决这个问题吗?
任意函数,例如:
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
略有不同。例如,函数被提升。但在上面的例子中,它们是等价的。
我正在为私有包创建 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;
}
知道如何解决这个问题吗?
任意函数,例如:
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
略有不同。例如,函数被提升。但在上面的例子中,它们是等价的。