Добавить нетипизированное свойство параметров JavaScript в объявленный класс - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю с объявлениями типа koa-router из репозитория DefinitiveTyped .Объявление класса не содержит определения для свойства opts, что означает, что попытка получить доступ к свойству приведет к ошибке TS2339.

Помимо нетипизированных обходных путей, например, (routerObj as any).opts.<option>, как я могудобавить / расширить это свойство с типами из IRouterOptions к уже существующему определению?

* Редактировать *

Я пытался расширение модуля , но яне удалось:

import Router from 'koa-router';

declare module 'koa-router' {
  class Router {
    opts: Router.IRouterOptions
  }
}

И следуя приведенной выше документации

import Router from 'koa-router';

declare module 'koa-router' {
  interface Router<T> {
    opts: Router.IRouterOptions
  }
}

Ничего из этого не помогло.Сообщение об ошибке, которое я получаю из VSCode, также довольно странно, что заставляет меня полагать, что TS рассматривает мою попытку дополнения и определения DefinitiveTyped как независимые определения: Property 'opts' does not exist on type 'import("/Absolute/Path/To/node_modules/@types/koa-router/index.d.ts")'.

Однако расширение другого интерфейса из определений DefiniteTyped делаетработа:

import Router from 'koa-router';

declare module 'koa-router' {
  interface IRouterOptions {
    requiredVar: boolean;
  }
}

Это даст TS2322: Type '{}' is not assignable to type 'IRouterOptions'. Property 'requiredVar' is missing in type '{}'.

...