Есть функция:
function magicFunc<T extends object>(array: T[], key: keyof T, value: ...) { ... }
Я хочу чтобы тип аргумента
value совпадал с типом ключа, название которого передаётся в аргумент
key.
Проще говоря, я хочу видеть такое поведения от своего редактора кода:
// Условный массив объектов
const myArray = [
{ id: 1, name: 'Добрыня', age: 40},
{ id: 2, name: 'Алёша' age: 23},
{ id: 2, name: 'Былина', age: 35}
]
magicFunc(myArray, 'age', 'Добрыня')
// ❌ошибка, тип значения 'Добрыня' не совпадает с типом свойства 'age'
magicFunc(myArray, 'id', 'Былина')
// ❌ ошибка, тип значения 'Добрыня' не совпадает с типом свойства 'id'
magicFunc(myArray, 'name', 'Алёша')
// ✅ Всё хорошо
magicFunc(myArray, 'id', 1)
// ✅ Всё хорошо