首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript: DefinitelyTyped中的子函数

TypeScript: DefinitelyTyped中的子函数
EN

Stack Overflow用户
提问于 2020-02-07 18:32:46
回答 1查看 121关注 0票数 2

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

代码语言:javascript
复制
  GlobalNameSpace.foo = function(arg) {} 
  GlobalNameSpace.foo.bar1 = function(arg) {} ;
  GlobalNameSpace.foo.foo2 = function(arg) {};

我试过在我的index.d.ts中使用class,但是foo不是一个class,不幸的是它是一个普通的函数。

我的尝试是:

代码语言:javascript
复制
declare namespace GlobalNameSpace {
    function foo(options: any): void;
}

你知道我该怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 19:54:56

任何函数,例如:

代码语言:javascript
复制
function foo(options: any): void;

可以表示为可调用的对象,如下所示:

代码语言:javascript
复制
const foo: {
    (options: any): void;
}

此外,任何对象都可以具有其他属性。这些属性也可以是可调用的,因此以下内容是完全有效的:

代码语言:javascript
复制
declare namespace GlobalNameSpace {
    const foo: {
        (options: any): void;

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60111649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档