ну union означает сумму множеств, а discriminated — что ты каждому множеству присваиваешь свое уникальное имя, что позволяет множество объединять с самим собой под разными именами (One of string | Two of string). А untagged unions это когда уникальных имен нет, и объединение множества с самим собой дает себя же, т.е. string|string = string