Типоскрипт добавление перегрузки функций в интерфейс

#typescript

Вопрос:

Я знаю, что можно расширить интерфейс из другого модуля в машинописном виде, как это:

 declare global {
    // eslint-disable-next-line @typescript-eslint/no-namespace
    namespace Express {
        export interface Request {
            readonly foo: string;
        }
    }
}
 

Мне интересно, возможно ли то же самое с функциями, которые уже существуют в дополняемом типе.
Например, интерфейс express Request (который уже был изменен в предыдущем примере) также содержит функцию — член header() . Эта функция имеет один string параметр. Но есть и другая перегрузка, которая принимает этот тип set-cookie . Можно ли добавить еще одну перегрузку для этой функции, например , с типом Authorization , вроде этого:

 declare global {
    // eslint-disable-next-line @typescript-eslint/no-namespace
    namespace Express {
        export interface Request {
            header(name: 'Authorization'): string | undefined;
        }
    }
}
 

Обратите внимание, что этот пример не работает (иначе этот вопрос был бы несколько бессмысленным). Кроме того, я очень хорошо понимаю , что в настоящее время уже можно вызвать функцию header() с аргументом 'Authorization' , но разработчикам было бы немного приятнее, если бы VS-код показывал их 'Authorization' в поле автозаполнения.

Комментарии:

1. попробуйте header<T extends 'Authorization'>(name: T): string | undefined; и, пожалуйста, дайте мне знать, если это поможет

2. Нет, к сожалению, это не сработало.