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