我帮助维护一个生成 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/