gpt4 book ai didi

typescript - 如何创建此 TypeScript 接口(interface)的函数实例?

转载 作者:行者123 更新时间:2023-12-02 20:26:28 24 4
gpt4 key购买 nike

界面的语法让我很困惑。它看起来重载,但是当我尝试创建具有任一签名的函数时,编译器告诉我缺少另一个签名。目标是模拟 Jest 单元测试的函数。

interface SearchResultSetEachFunction {
promise(callback: (result: Result) => boolean): Promise<boolean>;
(callback: (result: Result) => boolean): void;
}

最佳答案

它没有重载,它是一个函数,也有一个名为 promise 的属性。您可以使用Object.assign来创建这样的对象:


let fn: SearchResultSetEachFunction = Object.assign(function (callback: (result: Result) => boolean): void {

}, {
promise(callback: (result: Result) => boolean): Promise<boolean> {
return Promise.resolve(false)
}
})

Playground Link

或者在较新版本的 typescript 中,您可以使用函数声明并直接在与声明相同的范围内分配promise成员,以使ts将其识别为新成员:


function mockSearchResultSetEachFunction(callback: (result: Result) => boolean): void {

}
mockSearchResultSetEachFunction.promise = function (callback: (result: Result) => boolean): Promise<boolean> {
return Promise.resolve(false)
}

let fn: SearchResultSetEachFunction = mockSearchResultSetEachFunction

Playground Link

关于typescript - 如何创建此 TypeScript 接口(interface)的函数实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com