Я работаю с объявлениями типа 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 '{}'.