VKCOM / vk-mini-apps-router

MIT License
26 stars 4 forks source link

[Bug]: Не выводятся объекты и подсказки view, если CreateView в конфиге больше 7 штук #429

Closed ExLineP closed 3 weeks ago

ExLineP commented 4 weeks ago

Описание

На данный момент у нас есть View на каждый Route. Мы решили поменять роутер и заметили, что после 7 CreateView в RoutesConfig.create перестают работать подсказки и вообще ts выдает ошибку об отсутствии любого view.

Версия vk-mini-apps-router

v1.4.6

Платформа

Web, MobileWeb, IOS, Android

Браузер и версия

No response

Шаги воспроизведения

Создать RoutesConfig.create, добавить один Root и в нем >7 CreateView и вложенными CreatePanel.

Ожидаемое поведение

Все пути работают и выбираются в подсказках IDE

Скриншоты

No response

Приложение

No response

Код, который вызвал ошибку

No response

nshvyryaev commented 3 weeks ago

Здравствуйте!

Это не баг, а, скорее, ограничение на типизацию объекта с заранее неизвестной структурой в TS и IDE.

Для большого количества View вы можете указать типизацию вручную.

Если интересуют детали ограничения, то, чтобы поддержать захват типов произвольного объекта, приходится допускать возможность создания разных объектов на всех уровнях. У структуры маршрутов может быть 5 уровней вложенности: root, view, panel, tab, modal. На каждом уровне типизация поддерживает определенное количество вариантов:

Если все эти варианты перемножить, получается 273 тысячи разных объектов. TS при захвате типов перебирает и подставляет правильный. Если вариантов становится слишком много, захват типов падает и тип объекта становится unknown. Мы приблизили возможности библиотеки к пределу. Дальше захват типов не справляется, поэтому если нужно больше роутов и есть желание сохранить типизацию, следует описать ее вручную.

ExLineP commented 3 weeks ago

А будут ли подсказки для параметров в случае описания роутов вручную?

nshvyryaev commented 3 weeks ago

Будут, если описать указать hasParams: true и описать paramKeys у объектов panel, modal или tab, использующих параметры.

ExLineP commented 3 weeks ago

Еще один вопрос) Есть ли подсказки url строки в push методе?

nshvyryaev commented 3 weeks ago

Нет, на строки подсказок нет. Типизация работает только с объектами RoutesConfig.create