return ({ _T: 'APIError' as 'APIError', error });
}
export function UnexpectedError(error: string) {
return ({ _T: 'UnexpecredError' as 'UnexpectedError', error });
}
export type Err =
| ReturnType<typeof APIError>
| ReturnType<typeof UnexpectedError>;
export function print(error: Err): string {
switch (error._T) {
case 'APIError': return gettext(...); // фортам вывода ошибок API
case 'UnexpectedError': return gettext(...); // формат вывода ошибок приложения
}
}
/** usecase **/
function test(): Err | number {
return Math.random() < 0.2 ? UnexpectedError(' < 0.2') : 123;
}
Через Enum ... было бы по моему громозко
вот ты в своем примере уже разок опечатался и тебе об этом никто не подскажет 'UnexpecredError'
что-то дико выглядит с этими кастами
Обсуждают сегодня