169 похожих чатов

Ребят, помогите с вопросом, он как бы по тайпскрипту, но

и по Вью, потому пишу сюда.
Как типизировать мутацию во vuex, изменяющую вложенные свойства объекта?
Предположим, у нас в сторе лежит
myDog = {
name: 'Blablovich',
color: 'black',
toys: {
favorite: [
'bone'
'ball'
],
usual: [
'annoying_squeaker'
]
}

И есть мутация, принимающая поля state, section, field
section - первый уровень вложенности (name, color, toys),
field - соответственно, второй (favorite, usual)

Мутация вызывается как для обновления данных в section - myDog[section] (к примеру, myDog.name),
так и для обновления field - myDog.toys.favorite

Как правильно типизировать такую мутацию?

такой вариант не работает:

type Toys = {
favorite: string[],
usual: string[],
}

type Dog = {
name: string,
color: string,
toys: Toys,
}

UPDATE_THE_DOG<
T extends Dog,
Key extends keyof T,
SubKey extends keyof T[Key],
>(state: AnimalState, { field, section, value }: {
field: SubKey,
section: Key,
value: T[Key][SubKey],
}): void {
const sectionObj = state.myDog[section]
sectionObj[field] = value
}
}

в гугле не смогла найти, вероятно, неправильно составляю запрос, или это невозможно?
суть в том, чтобы иметь возможность изменять как свойства на первом уровне вложенности, так и на уровень глубже

2 ответов

5 просмотров

Разбить на 2

Олекса Лелека 🐝- Автор вопроса

такс, разбиение разбиением, но при изменении вложенного объекта вопрос остался тем же: как правильно получить и указать типы свойств вложенного объекта? не зная точно, что там будет по примеру выше: нужно, чтобы можно было присвоить новое свойство, указав правильные типы для аргументов Key extends keyof Dog, SubKey extends keyof Dog[Key], >(state: AnimalState, { field, section, value }: { field: SubKey, section: Key, value: Dog[Key][SubKey], интересует строка: SubKey extends keyof T[Key], - получаю ошибку Type 'SubKey' cannot be used to index type 'string | number | boolean'. в то время как Key получаю корректные, туда подтягиваются все ключи объекта-родителя

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
19
А что ты вообще делаешь ?
Yesgoter
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
Карта сайта