#typescript
#typescript
Вопрос:
Учитывая функцию, которая возвращает полезное значение и значение ошибки, когда что-то идет не так, я пытаюсь избежать проверки, является ли полезное значение undefined
при отсутствии ошибки,
const someFunc = (): {error?: Error, value?: string} => { /* ... */ }
После вызова вышеупомянутой функции мы можем проверить, есть ли ошибка. Однако, даже если ошибки нет, мы все равно должны проверить value
, определено ли значение.
const { error, value } = someFunc();
if (error) {
/* handle error */
// return something
// throw something
}
// This is necessary b/c `value` could be undefined.
// Yet it is "impossible" for value to be undefined if code execution reaches this point
if (!value) {
throw Error('Expected `value` to be defind');
}
// only now can `value` be used without it being *|undefined
console.log(value.toUpperCase);
Существует ли лучший тип или шаблон обработки ошибок, который позволил бы обрабатывать ошибки аналогичным образом, избегая при этом необходимости проверки на value
определение?
Комментарии:
1. Вот хороший чистый шаблон, который может вам помочь github.com/David-Else /…
Ответ №1:
Почему бы не выдавать ошибки в функции. Первый вместо возврата error?: Error
, а второй в случае value === undefined
. В итоге вы получите: const sumFunc = (): string => {...}
. Функция, которую вы могли бы обернуть в try-catch.
Комментарии:
1. Существует много допустимых сценариев, в которых метод не должен принимать решение о выдаче или возврате ошибки. Решение может потребоваться принять путем вызова методов. Если вы читаете комментарии, там написано «вернуть что-то / выбросить что-то».