Sergey Nikitin
@n-srg
Typescript | Javascript | Angular | React | Svelte
Информация
- В рейтинге
- Не участвует
- Откуда
- Amsterdam, Noord-Holland, Нидерланды
- Зарегистрирован
- Активность
Typescript | Javascript | Angular | React | Svelte
Ваш аккаунт
тут непонятно какую задачу вы этим хотите решить. ведь нет такого состояния что вы точно знаете что вернется при ошибке.
окей вы однажды написали catch блок и уточнили тип ошибки.
дальше код изменился, неважно при вызове или где то сбоку (что особенно весело). И тут считай вы сам себе враг, потому что тайпскрипт не предложит отрефакторить catch он просто будет думать что все осталось как прежде. а на самом деле теперь прилетает ошибка совсем другого типа. тайпскрипт не помогает, и я пытаюсь понять в чем тогда профит
да, я совсем не спорю, что в Promise.reject можно засунуть все что угодно. и поэтому привел пример, что в eslint есть правило, которое разрешает использовать Promise.reject только с объектами типа Error и производных (что для меня кажется очень правильным)
вы абсолютно правы, прилететь может всё что угодно. возможно, в будущем появится strict флаг в конфиге, чтобы ошибки в catch блоках были типа unknown по умолчанию. сейчас в этом месте не хватает строгости.
я в домашних проектах всегда включаю strict: true, так что буду рад такой опции
на самом деле ошибку невозможно типизировать. представьте http запрос с json ответом. вы можете получить ошибку с сетью, а можете получить ошибку того что пришел не json и распарсить результаты не вышло. в этих случаях вы получите разные ошибки. по хорошему нужно чтобы все ошибки в catch блоках были типа unknown как это (опционально) предложили делать в конструкции try-catch, что будет семантически правильно. но в целом достаточно .catch(err: Error) писать
поэтому eslint например требует что если используется явно Promise.reject(err) то err должно быть что-то Error-подобное.
В моей истории нет четкого алгоритма, как с этим бороться, но я бы продолжил писать напрямую на почту, пробовал бы продвигать и дальше. Очевидно, что комментариев в пул-реквестах не хватает, чтобы обратить достаточно внимания на ту или иную проблему.