Доки по разработке
This project is maintained by teniryte
Принципы
InvalidDateFormatError, DateIsInFutureError) для точной обработки в catch.Error вместо выброса заставляет вызывающий код явно разбирать результат (pattern результата).Option, Some, None) позволяют выстраивать цепочки операций без исключений и с типовой безопасностью.Пример
class InvalidDateFormatError extends RangeError {}
class DateIsInFutureError extends RangeError {}
function parse(date: string) {
if (!isValid(date)) throw new InvalidDateFormatError('not a valid date format');
if (isInFuture(date)) throw new DateIsInFutureError('date is in the future');
}
function parseSafe(
date: string,
): Date | InvalidDateFormatError | DateIsInFutureError {
if (!isValid(date)) return new InvalidDateFormatError('not a valid date format');
if (isInFuture(date)) return new DateIsInFutureError('date is in the future');
// вернуть корректную Date
}
Практика
catch, чтобы упростить диагностику и повторное поднятие неизвестных ошибок.instanceof Error перед работой с данными.Option/Result, чтобы цепочки .flatMap срабатывали до первой ошибки без вложенных if.