Я пишу свои Jest-тесты на TypeScript, и я хотел бы создать строго типизированный макет для такой функции:
function download(
options: DownloadOptions,
callback?: (downloadId: number) => void
): void;
Обратите внимание, что обратный вызов не является обязательным. Если я использую jest.Mock
для приведения смоделированной функции ...
const mockDownload = jest.fn() as jest.Mock<void, [
DownloadOptions,
((downloadId: number) => void)?
]>
... и пытаюсь использовать ее следующим образом:
download.mockImplementation(
(
options: DownloadOptions,
callback: (downloadId: number) => void,
) => callback(0),
)
... Я получаю ошибку TS 2345:
Аргумент типа '(параметры: DownloadOptions, callback: (downloadId: number) => void) => void' нельзя назначить параметру типа '(параметры: DownloadOptions, callback? : ((downloadId: number) => void) | undefined) => void '.
Типы параметров' callback 'и' callback 'несовместимы.
Type' ((downloadId: номер) => пустота) | undefined 'нельзя назначить типу' (downloadId: number) => void '.
Тип' undefined 'нельзя назначить типу' (downloadId: number) => void '.