Стратегии Passport.js могут поддерживать дополнительные параметры в вызове authenticate:
passport.authenticate('azuread-openidconnect', {
// Default passport options
failWithError: true,
successReturnToOrRedirect: '/',
// Custom option supported by the azure-ad plugin
// Type error - 'tenantIdOrName' does not exist in type 'AuthenticateOptions'
tenantIdOrName: 'common',
});
Использование параметра, поддерживаемого пользовательской стратегией, например, tenantIdOrName
выше, приводит к ошибке машинописного текста, потому что это нечасть AuthenticateOptions
интерфейса паспорта найдена здесь и использована в authenticate
подписи здесь
Я несколько раз безуспешно пробовал
- расширение модуля, т. Е.
declare module 'passport' {...}
, по-видимому, переопределяет типизации модуля, а не расширяет их (все, что не в моем расширении, рассматривается как нетипизированное) - объединение интерфейсов, т. Е.
declare namespace passport { interface AuthenticateOptions { ...new properties }}
, похоже, это не имеет никакого эффектав сигнатуре метода authenticate
.
Как я могу поддерживать дополнительные свойства в вызове authenticate
без приведения типов?