и из actions.ts?
У меня есть метод в actions.ts у которого есть payload с интерфейсом, но по факту из компонента .vue я могу передать туда любой payload
с typescript в принципе так, не только во vue, но и просто в js: все эти типы нужны просто для подсветки в редакторе и при сборке они просто выпиливаются и никак не влияют на код. А в рантайме действует обычный js, который позволяет передать что угодно и куда угодно
это понятно, как мне сделать подсветку в компоненте Vue если я передаю туда не то, что хочет метод login из actions.ts?
а где defineStore? Это какой vue? И какой vuex/pinia?
vue 3, vuex 4.0.0
я работал с vuex, но е типизировал. Слышал, что у vuex плохо с типизацией, но не проверял. Сам уже давно не работал с vuex, работал с pinia и там все норм. Так что быстрый, но неточный ответ от меня - никак, у vuex с этим проблемы
вуекс нужно ручками типизировать, чтобы связать его волшебные строки и реальные методы, поэтому если хочется типизации и проект еще не сильно большой, то по проще выкинуть вуекс и взять пинию, где все нормально работает из коробки
начал использовать pinia, теперь в компоненте он подсвечивает мой интерфейс который указан, но все равно позволяет передавть туда неправильную структуру данных которая не заложена в интерфейсе AuthenticationRequest
в actions то он недает неправильную структуру передавать и не дает скомпилить можно сказать, а в компоненте с этим всё ок, нужно поведение такое же в компоненте
значит либо у тебя интерфейс не так написан, либо там вовсе и нет ошибки
переписал на обычный number, 2 скрин - в компоненте все равно позволяется передать строку вместо числа
Вроде бы у actions payload это второй аргумент. Здесь он написан один и скорее всего принимается за первый
добавь lang=“ts”, раз уж пишешь на TS
https://habr.com/ru/articles/765164/
там по дефолту только TS это валидирует, поэтому если язык не стоит, то и валидации нет, нужно с отдельными настройками поиграться, чтобы завести это на JS
Обсуждают сегодня