Comments 38
На самом деле - на сайте typescript есть фраза со смыслом "старайтесь использовать только те функции тайпскрипта, которые есть напрямую в js", так что помимо абстракций типов в библиотеках и фреймворках, я стараюсь следовать этой парадигме. По-человечески я интерпретирую ее как "тайпскрипт это чтобы явно сказать людям, что строка это строка и только строка", генерики и прочее тоже имеет место быть - но очень осторожно и минималистично, а то и правда в некоторых продуктах ts выглядит как java.
Весьма заинтригован докладом Климова про то что ts не нужен, с интересом жду когда доклад появится в открытом доступе.
Но лично я (и те члены команды с которыми я это обсуждал) чувствую много профита от ts, в особенности в части самодокументирования кода. Уже не представляю себе старта проекта без ts.
Илья этот разговор по его словам вел в закрытом эфире, а линку в паблик не собираются еще открывать увы. Так что я вякнул до пруфов.
youtu.be/jnSHRPCTFPc?t=341
Насколько я знаю, template по факту это и есть render сахар? Какую разницу в оптимизации вы имеете ввиду?
Issue тоже находил, но там только общие фразы типа "быстрее, но насколько - не знаем-с". Ради интереса провел свои тесты, компилируются реально по-разному, но перформанс тесты дают одинаковое время рендеринга на уровне погрешности. Так что в супернагруженных приложениях темплейты может и дают преимущества, но в общих случаях можно юзать то, что нравится :)
мне нравится vue3 + старый синтаксис
Хм. Проще купить webstorm/phpstorm и использовать стандартный template. Автоподсказки работают из коробки.
Суть не в intellisense или подобных автоподсказках, а в полноценной типизации темплейтов, как в JSX. Пишите свой компонент, описываете пропы и ивенты и они в компоненте-родителе проверяют ваши входные и выходные данных из компонента. В любом случае это на любителя, но все больше продуктов вижу, где пытаются выдавить максимум возможной типизации)
По-моему, многие проблемы у вас решатся с использованием vue-property-decorator и правильным оформлением кода.
В родителе и не проверяются типы child, я обозначил это как проблему темплейтов, а решается она, к сожалению, только TSX пока что. Я как раз и привел пример TSX компонента (типа и так можно писать). Vue-property-decorator не имеет смысла с новым setup во vue 3, а во 2 vue он единственный шанс нормально писать на typescript, да (https://habr.com/ru/post/540798/ самореклама, там писал об этом) . Что вы имеете ввиду под правильным оформлением кода, не совсем понял(
В общем, я считаю это бутылочным горлышком vue, но его можно прекрасно использовать и без 100% проверок типов, просто я ради интереса постоянно пытаюсь довести это до максимума)
Головная боль типизации хранилища в двух вещах: в хранилище и в типизации и она пройдет только в отсечением самой головы, как с пристнопамятным предыдущим "лордом вселенной и чемпионом окладов" - джавой
Почитаю, спасибо! С ходу не увидел там ts, но видимо просто не дочитал)
Благодарю за упоминание о Pinia, как сам хотел писать комментарий. Дело еще в том, что в Pinia 100% поддержка Typescript, идеологически очень грамотно выстроенная библиотека состояний, которая действительно станет основой (лучшие идеи) для Vuex 5, о чем речь идет вот здесь https://github.com/vuejs/rfcs/discussions/270
Выглядит как неплохое решение, но я все же склонен думать, что во vue 3 проще заархитектурить свое хранилище на композишине, так или иначе легче контролировать и менять что-либо в нем. Но тем кому просто не хочется что-либо придумывать, pinia подойдет отлично)
Была где то статья, что вариант с реализацией на Composition API не самая лучшая идея, не найду сейчас, но на эту же тематику https://vuejsdevelopers.com/2020/10/05/composition-api-vuex/
Кажется, что его нужно просто научиться готовить :)
С другой стороны "а зачем"? Готовые библиотеки типа Pinia решат все за нас
С моей точки зрения - потому что это очень легко в плане проектирования и написания, если взять архитектуру Vuex и просто переписать ее для composition api. Ну, а преимущество этого в свободе от зависимостей и свободе кастомизации)
Но это мой вывод спустя написание пары сторов для пет проектов и проектирования одного в небольшой коммерческий проект, возможно с большой командой можно столкнуться с какими-то подводными)
Дочитал до про "фанат типизации" и дропнул...
Vue 3: CompositionAPI + Typescript эксперименты