@types/ паспорт версии 1.0.5 генерирует новую ошибку: Type Authenticator не удовлетворяет ограничению IncomingMessage

У меня есть веб-приложение Koa.JS, которое использует Passport.JS для аутентификации oAuth2. Это веб-приложение написано на машинописном тексте. Вот код аутентификации:

      import { deserializeUser, serializeUser, use } from 'koa-passport';
import { Strategy, VerifyCallback } from 'passport-oauth2';
import config from 'config';
import { Authenticator } from 'passport';
const OAuth2Strategy = Strategy;
use(
  new OAuth2Strategy(
    config.get('oauth2'),
    (accessToken: string, refreshToken: string, profile: any, done: VerifyCallback): void => 
    {
      if (accessToken && refreshToken) {
        const tokens = { access_token: accessToken, refresh_token: refreshToken };
        done(null, tokens);
      } else {
        done(undefined, undefined, { message: 'An error occurred!' });
      }
    }
  )
);

serializeUser<Authenticator, Authenticator>(
  (user: Authenticator, done: (err: any, id?: Authenticator | undefined) => void): void => {
    done(null, user);
  }
);

Веб-приложение отлично компилируется с @ types / паспорт 1.0.4, но генерирует новую ошибку, когда я обновляю версию @ types / паспорт до 1.0.5.

      Type 'Authenticator<Handler, any, any, AuthenticateOptions>' does not satisfy the constraint 'IncomingMessage'.
Type 'Authenticator<Handler, any, any, AuthenticateOptions>' is missing the following properties from type 'IncomingMessage': aborted, httpVersion, httpVersionMajor, httpVersionMinor, and 45 more.

serializeUser<Authenticator, Authenticator>

Кто-нибудь испытал это?

1 ответ

Возможно изменение интерфейса Authenticator? ЧТО ВЫ ГОВОРИТЕ!? Да - изменение интерфейса с незначительным изменением номера версии !!!

Я ожидал, что интерфейс serializeUser из koa-паспорта, вероятно, не синхронизирован с обновлениями, сделанными в паспорте ... В моем мире критическое изменение интерфейса обычно означает изменение основной версии.

Как показано ниже, версия 1.0.4 Passport позволяет использовать общий TUser.

serializeUser<TUser, TID>(fn: (user: TUser, done: (err: any, id?: TID) => void) => void): void;

Теперь с V1.0.5 паспорта интерфейс изменен, чтобы ограничить Express.User.serializeUser(fn: (user: Express.User, выполнено: (err: any, id?: TID) => void) => void): void;

Другие вопросы по тегам