Исправлено использование типа значения непосредственно из сопоставленного типа:
function insert<T, K extends keyof T>
(target: T, property: K, value: T[K]) {
target[property] = value;
}
Основное изменение:
- second generi c
K
- третий тип аргумента:
T[K]
Поскольку у вашего типа есть один тип значения, у нас даже может быть другое решение без второго обобщенного c:
function insert<T extends Record<string, number>>
(target: T, property: keyof T, value: T[keyof T]) {
target[property] = value;
}
В этом контекст, когда все ключи представляют одно и то же значение, T[keyof T]
также является правильным.