транспорта axios.
- tmp получает верные типы (имя и сигнатуру методов в кортеже), но почему на 35й строке 2й параметр method - prm: never?
- на ...args ругается, видимо из-за юниона? не могу придумать, как обойти это(
код, естественно не полный (убрал все, не имеющее отношение к ошибкам), поэтому сходу причины писать так могут быть непонятны
Ну, never он выдаёт, потому что "prm" имеет разный тип, а гардов у тебя для него нет. Это первое что в глаза бросилось. Попробуй гарды для начала прописать...
Гварды мне нельзя, т.к. должен быть универсальный код на любое кол-во методов
есть у кого мысли?
да это понятно - на выходе из getApi методы верно типизированы, просто непонятно, как внутри эти ошибки исправить (не люблю грязно делать)
кажется ты хочешь с хорошо типизированными данными работать как с менее структурированными - {a:(a:number)=> void; b:(b: string)=> void} хочеш обработать как Record<string, (...args: unknown[])=>unknown> - может тогда сделать именно сигнатуру с таким типом а сверху накрутить перегрузку с нормльной типизацией?
а дженерики разве не помогут?
я хочу, чтоб TS запомнил связь name-method)
так он и запоминает и мерджит их в forEach после чего конфилкт возникает - если тоже самое делать руками (if(name===...) method(...))то все ок - это опять к тому что кастомные данные надо мапать руками и не пачкой как ты хочешь, если хочешь пачкой то приведи их к такому менее структурированному виду
возможно но я чет не рассматривал такой вариант - будет круто если скинешь в песочницу что ты имеешь ввиду
если мне руками каждый метод проверять надо, то во всей этой конструкции вообще смысл пропадает =)
я понимаю - разговор был про сохранение соответствия - соответствие сохраняется но оно тебе не нужно
Обсуждают сегодня