Нужна помощь с типизацией в тайпскрипте. Обновляю тайпинги для своей либы, упёрся в то, что типы не хотят делать то, что они делают в флоу. Я наверняка что-то упускаю в особенностях ТС.
Ссылка на плейграунд:
https://bit.ly/3cj9RgF (сори за битли, не знал что
goo.gl умер)
Ситуация 1: createResource() должен возвращать генерик тип, который знает про “запакованный” тип пользовательского кода. В строке 20 объявляется ResourceA, и его первым позиционным типом (см ResourceCache<>) должен быть number (как результат функции query). Почему-то ТС не видит этот тип и оставляет unknown. Возможно что-то особенное нужно сделать с сигнатурой createResource(), но я не уверен что именно
Ситуация 2: useResource() должен проверять соответствие массива зависимостей с сигнатурой соответствующей query функции (в имплементации происходит .apply()). Для сохранения нужного типа этого массива я сохраняю Parameters<Query> в ResourceCache<>. На 27й строке можно увидеть ожидаемую ошибку, потому что передается строка, а ожидается number (как в query на строке 21). Но, я могу передать number вторым параметром ([‘sdf’, 1]) и внезапно ошибка пропадает, хотя их теперь должно быть две. Я возможно ожидаю что-то не то от Parameters<>, возможно есть какой-то аналог который сохраняет позиционирование и размер?