кстати странно что у него это получилось
export const right = <L, A>(a: A): Either<L, A> => {
return new Right<L, A>(a);
};
когда я делал на фантомных типах штуку, мне компилятор настойчиво говорил что у тебя нет L. и в этом есть смысл, потому что L в рантайме сконструировать никак нельзя, если его не будет в рантайме, всмысле нельзя просто взять и сделать some_either::L