расширение
Ваше слияние Matchers
почти правильное, но, глядя на типы шуток в «Определенно типизированном» [1], я вижу, что Matchers
вложено в пространство имен jest
. Эта часть справочника Typescript охватывает это слияние пространства имен .
namespace jest {
export interface Matchers<R> {
functorToBe<T>(actual: Functor<T>, expected: Functor<T>): R;
}
}
Когда я проверял это, мне понадобился tsconfig.json, чтобы мои JS-файлы увидели объявление:
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
},
"include": [
"test.js",
"extensions.ts",
]
}
jsconfig.json - это почти то же самое, но не требует явного добавления "allowJs": true
. Но обратите внимание, что добавление tsconfig или jsconfig отключит автоматическую загрузку типов из «Определенно типизированного», и вам придется вручную npm install @types/jest
(плюс любые другие типы для используемых вами библиотек). Если вы не хотите добавлять tsconfig, я смог вручную добавить ссылку в файле JS в качестве первой строки:
/// <reference path="./extensions.ts" />
Тип нового метода
Это должно быть что-то вроде:
functorToBe(expected: R): R;
Здесь вещи меня смущают. Дайте мне знать, если у вас есть вопросы по этой части проблемы, и я постараюсь помочь.