如何扩展 passport.js 模块 AuthenticateOptions 接口

How to extend passport.js module AuthenticateOptions interface

Passport.js 策略可以支持身份验证调用中的其他选项:

    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,会导致打印错误,因为它不是 passport 的 AuthenticateOptions 界面的一部分 found here and used in the authenticate signature here

我试过一些东西都没有成功

如何在不进行类型转换的情况下支持 authenticate 调用中的其他属性?

原来我需要为我的模块扩充导入现有模块以扩展模块的类型。

.d.ts 文件* 中的以下内容成功扩展了 AuthenticateOptions 接口:

import { AuthenticateOptions } from 'passport';

declare module 'passport' {
  // Extend acceptable authenticate options for Passport Azure AD
  // https://github.com/AzureAD/passport-azure-ad#513-options-available-for-passportauthenticate
  interface AuthenticateOptions {
    customState?: string;
    resourceURL?: string;
    tenantIdOrName?: string;
    domain_hint?: string;
    login_hint?: string;
    prompt?: string;
  }
}

*我发现文件必须不能命名为passport.d.ts,任何其他名称都可以