У меня есть рекурсивная функция, которая принимает объект с универсальным интерфейсом.Функция пересекает объект и создает новый объект с почти точно таким же интерфейсом, за исключением конечных узлов / листьев, она преобразует их в числа.Функция возвращает этот новый объект, но я не могу выяснить, как придать этому правильный тип.
Пример:
interface IOriginal
{
prop1: string,
prop2: number,
prop3: {
prop1: boolean,
prop2: {
prop1: number
},
prop3: string
}
}
const input : IOriginal = {
prop1: "somestring",
prop2: 5,
prop3: {
prop1: true,
prop2: {
prop1: 2
},
prop3: "otherstring"
}
}
function traverse<T>(obj: T)
{
/* ... map the object ... */
return mappedObj
}
const output = traverse(input)
и интерфейс вывода (сопоставленного объекта) должен выглядеть как
interface IOutput
{
prop1: number,
prop2: number,
prop3: {
prop1: number,
prop2: {
prop1: number
},
prop3: number
}
}
С отображенными типами я могу только отобразить первый уровень глубины, если это имеет смысл.