negezor / vk-io

Modern VK API SDK for Node.js
https://npm.im/vk-io
MIT License
549 stars 85 forks source link

Пользовательское расширение контекста без потери типизации #557

Open DZ8540 opened 1 year ago

DZ8540 commented 1 year ago

What did you do?

Создал интерфейс своего базового контекста, который содержит сессию и сцены, так как в своем проекте предполагаю, что они всегда подключены и доступны

export type BaseContext = MessageContext & {
  session: Session,
  scene: SceneContext,
}

What did you expect to happen?

Тайпскрипт показывает any для любого не декларированного свойства контекста.

What was the actual result?

В целом подсказки все есть, проблема здесь в том, что если при использовании контекста (в сценах или в обычных Middleware) приписывать к контексту не декларированные свойства, то тайпскрипт жаловаться не будет, что очень критично.

Additional Info

Скорее всего это происходит из-за этого.

Versions

package version
vk-io 4.8.3
TypeScript 4.6
DZ8540 commented 1 year ago

В сценах та же самая проблема с потерей типизации в сессиях сцен (ctx.scene.session.example выдает any, это свойство нигде не декларировано). Хотелось бы, чтобы исправили в этом же issue.