Если у вас вообще всё на классах, то можно и так, конечно
Такой тайпгард будет работать аналогично проверке isSuccess в приведённом мной варианте
В общем, твой вариант лучше. В моём не получается нормально сделать сужение типа. Но немного смущает дополнительная вложенность, которой не было в моём варианте. Думаю, это ограничение TS, он не распознаёт сужение через исключение типов. Т.е. я ему даю юнион A | B | C
, делаю проверку на то, что это не A и не B, но он не признаёт, что это C.
Так что возьму твой вариант.