Учитывая произвольное количество объектов различной формы, возможно ли, чтобы TypeScript правильно утверждал информацию о типе?
Пример:
const merge = (...objects) => {
return Object.values(objects).reduce((acc, next) => ({ ...acc, ...next }));
}
Мой фактический вариант использования намного более сложен чем это, но подпись типа будет похожа.
Вот что работает, но я надеюсь, что это не единственное решение:
function merge<T1, T2>(...objects: [T1, T2]): T1 & T2;
function merge<T1, T2, T3>(...objects: [T1, T2, T3]): T1 & T2 & T3;
function merge(...objects) {
return Object.values(objects).reduce((acc, next) => ({ ...acc, ...next }));
}
Мои проблемы с этим, что он не может скомпилировать с более новые версии TypeScript, которые вообще не подлежат обслуживанию.
Есть ли лучший способ добиться этого?