Вы получаете ошибку от того, что ваш код неверный.
Разберемся по порядку.
Вы описываете тип
one как объект с двумя
обязательными полями:
items и
item
Затем вы описываете второй тип
two как объект с двумя
обязательными полями:
select и
data
После чего вы говорите себе: "Эта функция должна возвращать или тип
one или тип
two.
Либо то либо то. ". А описываете функцию которая возвращает ни то ни другое.
Если у вас по программе могут гулять не атомарные типы а какие-то подмножества -- Делайте декомпозицию
Это вам поможет.
Для тех случаев, когда у вас есть функция которая генерирует какой-то кусок атомарного типа её можно описать с помощью
Pick
И на худой конец, если уж очень чешется наговнокодить, можно написать так:
function g(): Pick<one, 'items'> & Pick<two, 'select'> {
}