Albert
Есть такая задачка. Функция регистрации возвращает либо true, либо объект с массивом ошибок. Я сделал union тип Boolean | CustomErrorsResult, но прикол в том, что у Boolean нету typename, и вообще мы не можем использовать скалярные типы в Unions. Получается нужно или наш boolean завернуть в BooleanResult и сделать объектом, но это уже оверкилл, либо возвращать только CustomErrorsResult, причем изменить его на CustomResult, в котором кроме поля errors[] будет поле ok: boolean.
Из своей практики - юнионами не очень удобно.
Возвращай RegisterPayload с полями
ok: Boolean!
errorMsg: String
errorCode: String или Enum
Плюс если не боишься 4го аргумента в резолвере. То если поля ошибки запросили в запросе, то ошибку возвращаешь в ResultPayload.
А если запросили только поле ok, то в резолвепе в случае ошибки выкидываешь исключение. Чтоб ошибка вывалилась на самом верхнем уровне в errors.
Т.е. если клиент просит вернуть ошибку в пейлоаде, он ее там получает. А если не просит, то на верхнем уровне. Получается, что клиент через запрос управляет тем, как вернуть ошибку.