Не удается добавить свойство в интерфейс для файла декларации passport-linkedin-oauth2 - PullRequest
2 голосов
/ 02 июля 2019

Я пытаюсь добавить свойство в интерфейс «StrategyOption» для файла декларации «passport-linkedin-oauth2». Он не объявляет ни один модуль или интерфейс. Просто экспортируйте интерфейсы и класс

....
export interface StrategyOption {
    clientID: string;
    clientSecret: string;
    callbackURL: string;

    scopeSeparator?: string;
    enableProof?: boolean;
    profileFields?: string[];
}
....
export class Strategy extends passportStrategy {...}

Я пробовал этим методом. Но все это не удалось

/// <reference types="passport-linkedin-oauth2" />
export {}

declare global {
  export interface StrategyOption {
    scope?: string[] // does not work
  }
}

и

export interface StrategyOption {
  scope?: string[] // does not work
}

и

interface StrategyOption {
  scope?: string[] // does not work
}

Есть ли способ добавить свойство в этот тип файла объявления?

1 Ответ

0 голосов
/ 02 июля 2019

Ну, я нашел идею.Это все о augmetation

Так что мой код должен быть

import 'passport-linkedin-oauth2'

declare module 'passport-linkedin-oauth2' {
  interface StrategyOption {
    scope?: string[]
  }
}

Но я не уверен, насколько важна следующая конфигурация

В tsconfig.json

"compilerOptions": {
....
    "baseUrl": ".",
    "paths": {
      "*": ["/src/types/*", "node_modules/*"]
    }
}

Нужно, чтобы файл объявления расширения находился в каталоге /src/types/ в моем случае без какого-либо подкаталога.

...