如何创建此 TypeScript 接口的函数实例?
How can I create a function instance of this TypeScript interface?
界面的语法让我很困惑。它看起来超载了,但是当我尝试使用任一签名创建函数时,编译器告诉我缺少另一个签名。目标是模拟 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)
}
})
或者在较新版本的打字稿中,您可以使用函数声明并直接在与声明相同的范围内分配 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
界面的语法让我很困惑。它看起来超载了,但是当我尝试使用任一签名创建函数时,编译器告诉我缺少另一个签名。目标是模拟 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)
}
})
或者在较新版本的打字稿中,您可以使用函数声明并直接在与声明相同的范围内分配 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