{
[key: string]: T | string
}
как мне заменить все строковые значения в ней на что-то свое (там строку 'test'), оставив тот же shape?
Непонятно описано, что требуется. И этот тип не заработает (что такое T в данном случае?)
почему не зарабатает? T это тип структуры которая должна прийти на вход суть в том чтобы сохранить форму этой структуры но если при переборе структуры значение явяется строкой то заменить ее на 'test'
что-то типа такого попробуй [key: string]: T extends string ? 'test' : T
я же говорю мне не нужно типами манипулировать) мне нужна просто функция которая это сделает shape у структуры тот же поэтому функция принимает и возвращает тот же shape
function transform(input: T): T { const output = {}; for (let key in input) { if (typeof input[key] === 'object') { output[key] = transform(input[key] as T); } else { output[key] = 'test'; } } return output; }
гуд, я уже сделал через reduce function transform(input: T): T { return Object.entries(input).reduce<T>((accumulator, [k, v]) => { accumulator[k] = typeof v === 'object' ? transform(v) : `test` return accumulator; }, input); } но у тебя более процедурно выглядит, мне даже больше нравится)
Обсуждают сегодня