typescript - 你能在 TypeScript 中扩展一个函数吗?

标签 typescript

我帮助维护一个生成 spy 函数的 JavaScript 库,这些函数允许您检查传入函数的调用方式(主要用于单元测试)。

该库创建了一个函数,该函数具有附加属性,可让您检查调用。

是否可以创建一个 TypeScript 定义,允许将函数传递给需要函数并具有额外属性的方法?

这是无效的,但是类似于:

class Spy extends function {
    wasCalled: () => boolean;
    ...
}

这将允许我将 spy 传递给具有此签名的函数:

function subjectUnderTest(callback:() => void) {
    ...
}

最佳答案

是的,the TypeScript handbook calls this a "hybrid type" ,因为它是函数类型和常规接口(interface)的组合。

interface Spy {
    (foo: string, bar: number) : boolean; // Just an example
    wasCalled() : boolean;
}

var spy : Spy = createASpySomehow();
var result = spy("foo", 123);
if (spy.wasCalled()) {
    // ...
}

关于typescript - 你能在 TypeScript 中扩展一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338013/

相关文章:

Typescript 和 typeorm config .ts 没有重载匹配此调用

javascript - 通过字符串路径访问和修改 JSON-Object

typescript - 什么是环境声明

javascript - 定义对象仅包含特定类型的元素

javascript - 如何使 HostListener 用于滚动工作?

javascript - 使用 Map 实例按属性名称返回不同对象的数组?

angular - PrimennGTreeTable 图标不可见

Angular:与 mat-select 的 2 向绑定(bind)不起作用,在代码中赋值会导致其在 UI 中重置

javascript - 为什么 typescript 会在数字上抛出错误 |未定义的比较,即使在使用可选链接之后?

angular - 在 Angular 的 ContentChildren 中渲染组件