Juniorrrrr
@Juniorrrrr

Как передать аргумент функции, для сложного объекта?

Есть сложный объект
const obj:DataType = {
  val0:boolean,
  val1:string,
  val2:null | undefined | string
  val3: {
    field0:[string, string]
    field1: {
      word:string
    },
  val4:[
    {text0: true, text2:{}}
  ]  
  }
}


Хочу написать функцию, которая будет менять значения по ключу. Что-то типо такого
function changeField(data:DataType, fieldName:keyof DataType, val:any) {
  data[fieldName] = val
}


Но получаю в момент присвоение ошибку тип any не может быть назначен для типа never
ЯЯ так понимаю это ошибка как раз связана с тем что у val тип any
Подскажите пожалуйста, есть ли какое-то относительно простое решение ?
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
function changeField<T extends DataType, K extends keyof T>(data:T, fieldName:K, val: T[K]) {
  data[fieldName] = val
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы