Новый TypeScript 5.2 - оператор using

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024

Комментарии • 94

  • @PurpleSchool
    @PurpleSchool  Год назад +1

    🔗 Ссылки:
    О новом релизе: devblogs.microsoft.com/typescript/announcing-typescript-5-2-beta/
    ⚡Курс по TypeScript: purpleschool.ru/course/typescript
    - 18 часов видео
    - 29 тестовых заданий и упражнений
    - Неограниченный доступ и гарантия возврата средств
    - ⭐ 4.8 на независимых платформах
    👨‍💻Клуб разработчиков: purpleschool.ru/club
    Мои курсы по разработке: purpleschool.ru
    💬 Telegram канал с полезными советами: t.me/purple_code_channel

  • @shadowraze520
    @shadowraze520 Год назад +1

    Антон, спасибо за вашу работу, вы лучший 🙌🏻

  • @ilyatemnikov9624
    @ilyatemnikov9624 Год назад +1

    Антон, вы самый лучший!
    Спасибо за ваш большой труд

  • @slprime-old
    @slprime-old Год назад +8

    в общем завезли деструкторы

  • @Disorrder
    @Disorrder Год назад +1

    Капец какой сложный синтаксис завезли 😢 почему нельзя просто по дефолту вызывать этот диспоуз, слово using выглядит лишним, а тем более await using
    Да и обязательно возвращать объект только ради этого - тоже очень спорное решение.

    • @Tunec_s_hlebom
      @Tunec_s_hlebom Год назад

      Думаю что этот синтаксис будет на разработчиках библиотек, а рядовой программист будет просто писать using, а либа уже всё будет под капотом сама делать

    • @Disorrder
      @Disorrder Год назад

      @@Tunec_s_hlebom скорее всего да, но это не значит, что не начнут это использовать

  • @remiku-play
    @remiku-play Год назад

    Выглядит отвратительно, как и весь джава скрипт)

  • @Gellert94
    @Gellert94 8 месяцев назад +1

    Очень полезно, спасибо. Я правильно понимаю, что если в рабочих проектах 18я нода, то это ещё рано тащить, даже если хочется, и дождаться перехода на 20ю? Полифиллы, конечно, наше всё, но с такими штуками боюсь они будут кривыми

    • @PurpleSchool
      @PurpleSchool  8 месяцев назад

      TS данной версии можно использовать и с 19 нодой, проблем нет

  • @hotdoccxd7952
    @hotdoccxd7952 Год назад +3

    в курсе TypeScript (udemy) будет ето обновления ?

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      Да, это будет добавлено

  • @hgfyos
    @hgfyos Год назад +1

    Андерс Хейлсберг всё пытается из JavaScript сделать свой любимый C#. Я даже рад этому, но для фронта есть же Blazor (WebAssembly), для бека просто есть C#.
    Ради WebAPI? - Так это помойка та ещё...
    Всё больше кажется это заговором, чтобы все потом перешли на C#

  • @ПавелШлыков-м4ч
    @ПавелШлыков-м4ч 10 месяцев назад

    А не возникает ощущения у кого-то что хватит уже?
    Кто-то что-то еще ждет?
    Не приведет ли бесконечное добавление всего к проблемам? Таким что каждый будет писать по своему и тратить время на обсуждения как лучше? Проблемам в компиляторах, которым нужно обрабатывать в 10 раз больше всего? И просто повышению порога обучения?

  • @den-rad
    @den-rad 10 месяцев назад

    По поводу using, а почему такие вещи нельзя сделать через деструктор объекта? Как только код выходит из зоны видимости переменной, объект должен освободиться и вызваться деструктор. Зачем придумывать что-то заново ?

  • @mmakcc666
    @mmakcc666 Год назад +2

    Неудачный пример проблематики TRY/CATCH/FINALLY. В ролике воды на 60% от контента.
    Новая фича отличная

    • @Disorrder
      @Disorrder Год назад

      Ну да, воды и впрямь много, можно сжать до 5 минут. Я так понимаю, канал больше ориентирован на начинающих, кому надо одно и то же повторить разными словами несколько раз

  • @mip1992
    @mip1992 Год назад +1

    Синтаксис try catch им не понравился 😂

    • @PurpleSchool
      @PurpleSchool  Год назад

      Тут дело не в синтаксисе try / catch, а в концепции управления ресурсами. Finally помогает частично решить эту проблему только

  • @vanich49
    @vanich49 Год назад +2

    Посомтрел пару видос по этой теме несколько недель назад, никто внятно не мог объяснить для чего это, авто хорошо донес суть, мне изначально казклось что этот новый синтаксис нужен будет языку для лучшего сбора мусора

  • @awenn2015
    @awenn2015 5 месяцев назад

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

  • @blackgolddev4023
    @blackgolddev4023 Год назад

    Мдэ куда мир катится. Люди если нужна типизация берите C#. Такое ощущение что разрабы ts сидели и такой а давайте C# возьмем и скажем это ts. Logic = false;

    • @PurpleSchool
      @PurpleSchool  Год назад

      Это не фича TS, это фича JS, которую уже завезли в TS

  • @witseidOG
    @witseidOG Год назад

    Эй, друг, ты пробовал Helix? Это NeoNeovim на расте с кучей фич из коробки

    • @PurpleSchool
      @PurpleSchool  Год назад

      Пробовал, но по функционалу он не дотянул до моей текущей сборки и слабо кастомизируется.

  • @thats_embarrassing_JS
    @thats_embarrassing_JS Год назад +1

    Довольно удобно, но, конечно, синтаксис await using x = await doSmth() выглядит, мягко говоря, не очень.

  • @L0wPressure
    @L0wPressure Год назад +1

    Выглядит дико :( Надо это спрятать куда-нибудь в недра NestJS, и юзать через декоратор, тогда норм.

    • @PurpleSchool
      @PurpleSchool  Год назад

      Запись да, не обычная

  • @awenn2015
    @awenn2015 5 месяцев назад

    10:32 еще один вопрос, зачем нам в tsc конфиге использовать либу dom если мы пишем серверное приложение?

    • @PurpleSchool
      @PurpleSchool  5 месяцев назад

      Можно убрать

    • @awenn2015
      @awenn2015 5 месяцев назад

      @@PurpleSchool убрать то можно вопрос был в другом, зачем ты написал его? Без претензий и тд, просто интересно как ты тогда рассуждал)

  • @alexanderkomanov4151
    @alexanderkomanov4151 10 месяцев назад

    THANKS!

  • @ATazitinov
    @ATazitinov Год назад +1

    Спс за обзор. А что с обработкой ошибок при использовании using? Где лучше их выбрасывать/обрабатывать? Внутри useDB или на уровне выше?

    • @PurpleSchool
      @PurpleSchool  Год назад

      Зависит от задачи и что будем делать с ошибкой

  • @kspshnik
    @kspshnik 10 месяцев назад

    Антон, а где обещанная ссылка на TC39?

    • @PurpleSchool
      @PurpleSchool  10 месяцев назад

      Спасибо github.com/tc39/proposal-explicit-resource-management

  • @ДмитрийГоловенчик

    По сравнению с `defer` от GoLang, отложить выполнение действия до завершения функции, выглядит как-то костыльно.
    Вместо `defer await client.$disconnect();` - `await using await` - это зачет!
    понятно что реализация useDb будет скрыта в либах...
    остается только верить что не придется самому делать что-то типа useDb для своих нужд.
    короче крутое решение, которое сразу предполагает, что по верх этого прекрасного интерфейса, нужно будет писать либу с более удобным api...

  • @cyberblogru
    @cyberblogru Год назад +1

    Чего не сделаешь, чтобы не нарушать DRY)

  • @m3nn065
    @m3nn065 Год назад

    такой себе пример, учитывая что можно поставить disconnect до условия

  • @dpoleev
    @dpoleev Год назад

    catch всё таки нужен.

  • @eugenegavrilov2618
    @eugenegavrilov2618 Год назад

    Почему весь код на примерах слеплен? Перенос строки ведь толко добавляет читабельности коду, при сборке все пустые строки тем более вырезаются

  • @awenn2015
    @awenn2015 Год назад +1

    В целом очень полезная штука, я раньше писал всякие абстракции поверх mysql2 с обертками для запросов где вначале коннектился, потом выполнял функцию, колбек обёртки из вне где делаем круд и потом закрывал коннект, такое себе конечно но смысл такой же

    • @PurpleSchool
      @PurpleSchool  Год назад

      👍

    • @alexperemey6046
      @alexperemey6046 Год назад

      Тоже так делал, вполне норм решение, получалось внешне один в один как using в шарпе. Но тут конечно чуть красивее поскольку код оборачивать не нужно.

  • @KuruApni
    @KuruApni Год назад +1

    Спасибо!
    Выглядит, конечно, страшновато) Срочно нужно больше сахара синтаксического под такие вещи.

    • @PurpleSchool
      @PurpleSchool  Год назад +2

      Пожалуйста, да, в сравнении с defer выглядит не очень.

    • @awenn2015
      @awenn2015 Год назад

      ​@@PurpleSchoolну, учитывая что defer это Натив и определяется он сам как то скорее всего в рантайме, го только поверхностно видел так что не шарю как там дефер под капотом работает

    • @awenn2015
      @awenn2015 Год назад

      По идее такую штуку спокойно можно в декоратор вынести и использовать в методах где необходим коннект к базе данных

  • @akmalkarimov7159
    @akmalkarimov7159 Год назад +1

    Огонь бро

  • @NesterovRoman
    @NesterovRoman Год назад

    похоже на RAII

  • @vitaliypotapov8994
    @vitaliypotapov8994 Год назад

    Спасибо за видео. А какой все-таки смысл закладывается в первый await? Почему недостаточно было писать using db = await useDb()?

    • @PurpleSchool
      @PurpleSchool  Год назад

      Пожалуйста! Потому что отключение тоже асинхронно, а не только подключение.

  • @mo3g666
    @mo3g666 Год назад

    Какой ОС пользуетесь в основном для работы? И если Linux, то какой дистрибутив и DE?

  • @---Maksim---
    @---Maksim--- Год назад

    Асинхронный finally в общем)

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      Или синхронный, если просто using, а не await using

  • @gagogoga794
    @gagogoga794 Год назад

    Не очень понимаю зачем избавляться от try catch если подключение в базе асинхронное?)))

    • @PurpleSchool
      @PurpleSchool  Год назад

      Мы не избавляемся от него, мы обеспечиваем отключение базы при выходе из функции.

    • @gagogoga794
      @gagogoga794 Год назад

      @@PurpleSchool я понимаю что вы делаете, просто в видео как мне показалось поставили акценты на то что теперь мы избавились отборка трай кетч, но ведь он нужен в данной функции и совершенно нет проблемы дописать файнели блок и в нем закрыть конекшен)))

  • @tema693168
    @tema693168 Год назад

    Фича интересная, спасибо за видео. А в чем проблема придержаться способа DRY и отписаться единожды после получения результата на 7 строке? 4:59

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      Можно, то если вдруг код будет меняться и появится раньше выход из функции, то будет баг.

    • @Disorrder
      @Disorrder Год назад +1

      Я бы оставил дублирование. DRY и прочие известные акронимы - не более, чем рекомендация и упарываться по всем правилам порой бывает неразумно и только усложнит итоговый код. Поэтому в реальной жизни пиши так, чтобы тебя поняли с максимальной вероятностью, а не так, как «правильно».
      Но в качестве примера сойдёт. Представить, что там не 1 строка кода, а 3.

  • @antnzr656
    @antnzr656 Год назад +2

    Выглядит конечно убого по сравнению с голэнговским вариантом defer

  • @yaroslavpalaguta948
    @yaroslavpalaguta948 Год назад

    топ

  • @Noname-i4f3z
    @Noname-i4f3z Год назад

    В чём GoLang лучше Node.js? Можно видео на эту тему?

    • @МаксимЮревич-ф6я
      @МаксимЮревич-ф6я Год назад

      В Горутинах

    • @PurpleSchool
      @PurpleSchool  Год назад +1

      Он не лучше и не хуже, он для части задач подходит лучше, а для части, хуже

    • @awenn2015
      @awenn2015 Год назад

      Это разные яп, а что лучше это уже дело вкуса, голанг это про статическую типизацию и более низкоуровневый код, если любишь контролировать все это дело и сам яп быстрее так и так потому что он компилируемый, а нода для быстрого решения бизнес задач где скорость выполнения не особо важна, где упор только в io bound

    • @Disorrder
      @Disorrder Год назад

      Учи Rust 🤓

    • @archibaldstriebendrossel
      @archibaldstriebendrossel Год назад

      ​​@@PurpleSchoolСорян, но он лучше. Обьективно. Невозможно сделать язык за неделю, как это было с яваскриптом. И теперь всем миром мучаемся. А некоторые даже делают вид что получают удовольствие.

  • @holingdev1737
    @holingdev1737 Год назад

    Блин, ну в сравнении с defer выглядит как палка в колесо

  • @CJIu3eHb
    @CJIu3eHb Год назад

    Да что там defer, даже по сравнению с хаком на finally не выглядит выигрышно.

    • @hgfyos
      @hgfyos Год назад

      Вопрос реализации в ЯП, например, Dispose в C# очень сильно помогает GC, да и using устанавливают scope для жизни ресурсов, что даёт некоторую волю JIT. А вот defer изначально выглядит как костыль, который нужен ну в очень редких кейсах. Finally выглядит получше defer, но нужен исключительно для try-catch, когда флоу может пойти через жопу

    • @PurpleSchool
      @PurpleSchool  Год назад

      Не соглашусь. На практике defer используется очень часто: базы данных, HTTP, rmq, везде где нужно не забыть освободить ресурсы.

    • @hgfyos
      @hgfyos Год назад

      @@PurpleSchool зачастую как раз нет, в отдельной горутине слушаем через канал сигнал SIGINT и там уже закрываем все коннекты и тд. Для короткоживущих некоторые делают через defer, но на самом деле часто нет никакой проблемы и без него закрыть соединение

    • @Disorrder
      @Disorrder Год назад

      Только при условии, если ты в одном месте это используешь. Если функция набирает популярность, try/catch становится бойлерплейтом