Решено: помог перезапуск кода VS:
У меня есть модуль, написанный на es6 (не машинописный текст), и я хочу добавить к нему файл объявления ts. Модуль экспортирует только одну функцию, которую можно вызвать так:
fn(A, C)
fn(A, B, C)
Вот файл декларации, который у меня есть на данный момент:
/// <reference types = "node" />
/// <reference types = "graphql" />
declare module 'graphql-add-middleware' {
type middlewareFn = (root: any, args: any, context: any, info: any, next: () => Promise<any>) => Promise<any>;
export function addMiddleware (
schema: GraphQLSchema,
fn: middlewareFn,
): void;
export function addMiddleware (
schema: GraphQLSchema,
path: string,
fn: middlewareFn,
): void;
};
Я думал, что машинописный текст обнаружит два варианта этой функции (2 или 3 аргумента), но в проекте, где я использую этот модуль, ts жалуется, если я пытаюсь выполнить addMiddleware(schema, fn). В нем говорится, что было исключено 3 аргумента. Не жалуется, если делаю addMiddleware(schema, path, fn).
Что не так с моим файлом декларации? Как я могу заставить это работать?
Обновление - см. Экран ниже, что говорит код VS:
Обновлено: вы можете протестировать его самостоятельно - это пакет, он опубликован в npm: https://github.com/alekbarszczewski/graphql-add-middleware
Отредактировал свой вопрос - см. Скриншот.






Должно работать, как вы импортируете функцию? Вы уверены, что параметры совместимы со второй перегрузкой?