🔗 Ссылки: О новом релизе: 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
Капец какой сложный синтаксис завезли 😢 почему нельзя просто по дефолту вызывать этот диспоуз, слово using выглядит лишним, а тем более await using Да и обязательно возвращать объект только ради этого - тоже очень спорное решение.
Думаю что этот синтаксис будет на разработчиках библиотек, а рядовой программист будет просто писать using, а либа уже всё будет под капотом сама делать
Очень полезно, спасибо. Я правильно понимаю, что если в рабочих проектах 18я нода, то это ещё рано тащить, даже если хочется, и дождаться перехода на 20ю? Полифиллы, конечно, наше всё, но с такими штуками боюсь они будут кривыми
Андерс Хейлсберг всё пытается из JavaScript сделать свой любимый C#. Я даже рад этому, но для фронта есть же Blazor (WebAssembly), для бека просто есть C#. Ради WebAPI? - Так это помойка та ещё... Всё больше кажется это заговором, чтобы все потом перешли на C#
А не возникает ощущения у кого-то что хватит уже? Кто-то что-то еще ждет? Не приведет ли бесконечное добавление всего к проблемам? Таким что каждый будет писать по своему и тратить время на обсуждения как лучше? Проблемам в компиляторах, которым нужно обрабатывать в 10 раз больше всего? И просто повышению порога обучения?
По поводу using, а почему такие вещи нельзя сделать через деструктор объекта? Как только код выходит из зоны видимости переменной, объект должен освободиться и вызваться деструктор. Зачем придумывать что-то заново ?
Ну да, воды и впрямь много, можно сжать до 5 минут. Я так понимаю, канал больше ориентирован на начинающих, кому надо одно и то же повторить разными словами несколько раз
Посомтрел пару видос по этой теме несколько недель назад, никто внятно не мог объяснить для чего это, авто хорошо донес суть, мне изначально казклось что этот новый синтаксис нужен будет языку для лучшего сбора мусора
Кстати вопрос, недавно начал пользоваться призмой но не заметил что бы нужно было постоянно делать коннект и потом отключаться, просто создаю клиент и делаю круд, имеет ли смысл постоянно отключаться и переподключаться?
Мдэ куда мир катится. Люди если нужна типизация берите C#. Такое ощущение что разрабы ts сидели и такой а давайте C# возьмем и скажем это ts. Logic = false;
По сравнению с `defer` от GoLang, отложить выполнение действия до завершения функции, выглядит как-то костыльно. Вместо `defer await client.$disconnect();` - `await using await` - это зачет! понятно что реализация useDb будет скрыта в либах... остается только верить что не придется самому делать что-то типа useDb для своих нужд. короче крутое решение, которое сразу предполагает, что по верх этого прекрасного интерфейса, нужно будет писать либу с более удобным api...
В целом очень полезная штука, я раньше писал всякие абстракции поверх mysql2 с обертками для запросов где вначале коннектился, потом выполнял функцию, колбек обёртки из вне где делаем круд и потом закрывал коннект, такое себе конечно но смысл такой же
@@PurpleSchoolну, учитывая что defer это Натив и определяется он сам как то скорее всего в рантайме, го только поверхностно видел так что не шарю как там дефер под капотом работает
@@PurpleSchool я понимаю что вы делаете, просто в видео как мне показалось поставили акценты на то что теперь мы избавились отборка трай кетч, но ведь он нужен в данной функции и совершенно нет проблемы дописать файнели блок и в нем закрыть конекшен)))
Я бы оставил дублирование. DRY и прочие известные акронимы - не более, чем рекомендация и упарываться по всем правилам порой бывает неразумно и только усложнит итоговый код. Поэтому в реальной жизни пиши так, чтобы тебя поняли с максимальной вероятностью, а не так, как «правильно». Но в качестве примера сойдёт. Представить, что там не 1 строка кода, а 3.
Это разные яп, а что лучше это уже дело вкуса, голанг это про статическую типизацию и более низкоуровневый код, если любишь контролировать все это дело и сам яп быстрее так и так потому что он компилируемый, а нода для быстрого решения бизнес задач где скорость выполнения не особо важна, где упор только в io bound
@@PurpleSchoolСорян, но он лучше. Обьективно. Невозможно сделать язык за неделю, как это было с яваскриптом. И теперь всем миром мучаемся. А некоторые даже делают вид что получают удовольствие.
Вопрос реализации в ЯП, например, Dispose в C# очень сильно помогает GC, да и using устанавливают scope для жизни ресурсов, что даёт некоторую волю JIT. А вот defer изначально выглядит как костыль, который нужен ну в очень редких кейсах. Finally выглядит получше defer, но нужен исключительно для try-catch, когда флоу может пойти через жопу
@@PurpleSchool зачастую как раз нет, в отдельной горутине слушаем через канал сигнал SIGINT и там уже закрываем все коннекты и тд. Для короткоживущих некоторые делают через defer, но на самом деле часто нет никакой проблемы и без него закрыть соединение
🔗 Ссылки:
О новом релизе: 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
Антон, спасибо за вашу работу, вы лучший 🙌🏻
Пожалуйста!
Антон, вы самый лучший!
Спасибо за ваш большой труд
Спасибо!
в общем завезли деструкторы
Да
Капец какой сложный синтаксис завезли 😢 почему нельзя просто по дефолту вызывать этот диспоуз, слово using выглядит лишним, а тем более await using
Да и обязательно возвращать объект только ради этого - тоже очень спорное решение.
Думаю что этот синтаксис будет на разработчиках библиотек, а рядовой программист будет просто писать using, а либа уже всё будет под капотом сама делать
@@Tunec_s_hlebom скорее всего да, но это не значит, что не начнут это использовать
Выглядит отвратительно, как и весь джава скрипт)
Очень полезно, спасибо. Я правильно понимаю, что если в рабочих проектах 18я нода, то это ещё рано тащить, даже если хочется, и дождаться перехода на 20ю? Полифиллы, конечно, наше всё, но с такими штуками боюсь они будут кривыми
TS данной версии можно использовать и с 19 нодой, проблем нет
в курсе TypeScript (udemy) будет ето обновления ?
Да, это будет добавлено
Андерс Хейлсберг всё пытается из JavaScript сделать свой любимый C#. Я даже рад этому, но для фронта есть же Blazor (WebAssembly), для бека просто есть C#.
Ради WebAPI? - Так это помойка та ещё...
Всё больше кажется это заговором, чтобы все потом перешли на C#
А не возникает ощущения у кого-то что хватит уже?
Кто-то что-то еще ждет?
Не приведет ли бесконечное добавление всего к проблемам? Таким что каждый будет писать по своему и тратить время на обсуждения как лучше? Проблемам в компиляторах, которым нужно обрабатывать в 10 раз больше всего? И просто повышению порога обучения?
По поводу using, а почему такие вещи нельзя сделать через деструктор объекта? Как только код выходит из зоны видимости переменной, объект должен освободиться и вызваться деструктор. Зачем придумывать что-то заново ?
Неудачный пример проблематики TRY/CATCH/FINALLY. В ролике воды на 60% от контента.
Новая фича отличная
Ну да, воды и впрямь много, можно сжать до 5 минут. Я так понимаю, канал больше ориентирован на начинающих, кому надо одно и то же повторить разными словами несколько раз
Синтаксис try catch им не понравился 😂
Тут дело не в синтаксисе try / catch, а в концепции управления ресурсами. Finally помогает частично решить эту проблему только
Посомтрел пару видос по этой теме несколько недель назад, никто внятно не мог объяснить для чего это, авто хорошо донес суть, мне изначально казклось что этот новый синтаксис нужен будет языку для лучшего сбора мусора
Спасибо!
Кстати вопрос, недавно начал пользоваться призмой но не заметил что бы нужно было постоянно делать коннект и потом отключаться, просто создаю клиент и делаю круд, имеет ли смысл постоянно отключаться и переподключаться?
Нет, не нужно
Мдэ куда мир катится. Люди если нужна типизация берите C#. Такое ощущение что разрабы ts сидели и такой а давайте C# возьмем и скажем это ts. Logic = false;
Это не фича TS, это фича JS, которую уже завезли в TS
Эй, друг, ты пробовал Helix? Это NeoNeovim на расте с кучей фич из коробки
Пробовал, но по функционалу он не дотянул до моей текущей сборки и слабо кастомизируется.
Довольно удобно, но, конечно, синтаксис await using x = await doSmth() выглядит, мягко говоря, не очень.
Да, не привычно
Выглядит дико :( Надо это спрятать куда-нибудь в недра NestJS, и юзать через декоратор, тогда норм.
Запись да, не обычная
10:32 еще один вопрос, зачем нам в tsc конфиге использовать либу dom если мы пишем серверное приложение?
Можно убрать
@@PurpleSchool убрать то можно вопрос был в другом, зачем ты написал его? Без претензий и тд, просто интересно как ты тогда рассуждал)
THANKS!
👍
Спс за обзор. А что с обработкой ошибок при использовании using? Где лучше их выбрасывать/обрабатывать? Внутри useDB или на уровне выше?
Зависит от задачи и что будем делать с ошибкой
Антон, а где обещанная ссылка на TC39?
Спасибо github.com/tc39/proposal-explicit-resource-management
По сравнению с `defer` от GoLang, отложить выполнение действия до завершения функции, выглядит как-то костыльно.
Вместо `defer await client.$disconnect();` - `await using await` - это зачет!
понятно что реализация useDb будет скрыта в либах...
остается только верить что не придется самому делать что-то типа useDb для своих нужд.
короче крутое решение, которое сразу предполагает, что по верх этого прекрасного интерфейса, нужно будет писать либу с более удобным api...
Чего не сделаешь, чтобы не нарушать DRY)
👍
такой себе пример, учитывая что можно поставить disconnect до условия
catch всё таки нужен.
Верно
Почему весь код на примерах слеплен? Перенос строки ведь толко добавляет читабельности коду, при сборке все пустые строки тем более вырезаются
В целом очень полезная штука, я раньше писал всякие абстракции поверх mysql2 с обертками для запросов где вначале коннектился, потом выполнял функцию, колбек обёртки из вне где делаем круд и потом закрывал коннект, такое себе конечно но смысл такой же
👍
Тоже так делал, вполне норм решение, получалось внешне один в один как using в шарпе. Но тут конечно чуть красивее поскольку код оборачивать не нужно.
Спасибо!
Выглядит, конечно, страшновато) Срочно нужно больше сахара синтаксического под такие вещи.
Пожалуйста, да, в сравнении с defer выглядит не очень.
@@PurpleSchoolну, учитывая что defer это Натив и определяется он сам как то скорее всего в рантайме, го только поверхностно видел так что не шарю как там дефер под капотом работает
По идее такую штуку спокойно можно в декоратор вынести и использовать в методах где необходим коннект к базе данных
Огонь бро
👍
похоже на RAII
Спасибо за видео. А какой все-таки смысл закладывается в первый await? Почему недостаточно было писать using db = await useDb()?
Пожалуйста! Потому что отключение тоже асинхронно, а не только подключение.
Какой ОС пользуетесь в основном для работы? И если Linux, то какой дистрибутив и DE?
Mac OS везде
Асинхронный finally в общем)
Или синхронный, если просто using, а не await using
Не очень понимаю зачем избавляться от try catch если подключение в базе асинхронное?)))
Мы не избавляемся от него, мы обеспечиваем отключение базы при выходе из функции.
@@PurpleSchool я понимаю что вы делаете, просто в видео как мне показалось поставили акценты на то что теперь мы избавились отборка трай кетч, но ведь он нужен в данной функции и совершенно нет проблемы дописать файнели блок и в нем закрыть конекшен)))
Фича интересная, спасибо за видео. А в чем проблема придержаться способа DRY и отписаться единожды после получения результата на 7 строке? 4:59
Можно, то если вдруг код будет меняться и появится раньше выход из функции, то будет баг.
Я бы оставил дублирование. DRY и прочие известные акронимы - не более, чем рекомендация и упарываться по всем правилам порой бывает неразумно и только усложнит итоговый код. Поэтому в реальной жизни пиши так, чтобы тебя поняли с максимальной вероятностью, а не так, как «правильно».
Но в качестве примера сойдёт. Представить, что там не 1 строка кода, а 3.
Выглядит конечно убого по сравнению с голэнговским вариантом defer
Это верно)
топ
Спасибо!
В чём GoLang лучше Node.js? Можно видео на эту тему?
В Горутинах
Он не лучше и не хуже, он для части задач подходит лучше, а для части, хуже
Это разные яп, а что лучше это уже дело вкуса, голанг это про статическую типизацию и более низкоуровневый код, если любишь контролировать все это дело и сам яп быстрее так и так потому что он компилируемый, а нода для быстрого решения бизнес задач где скорость выполнения не особо важна, где упор только в io bound
Учи Rust 🤓
@@PurpleSchoolСорян, но он лучше. Обьективно. Невозможно сделать язык за неделю, как это было с яваскриптом. И теперь всем миром мучаемся. А некоторые даже делают вид что получают удовольствие.
Блин, ну в сравнении с defer выглядит как палка в колесо
Это верно...
Да что там defer, даже по сравнению с хаком на finally не выглядит выигрышно.
Вопрос реализации в ЯП, например, Dispose в C# очень сильно помогает GC, да и using устанавливают scope для жизни ресурсов, что даёт некоторую волю JIT. А вот defer изначально выглядит как костыль, который нужен ну в очень редких кейсах. Finally выглядит получше defer, но нужен исключительно для try-catch, когда флоу может пойти через жопу
Не соглашусь. На практике defer используется очень часто: базы данных, HTTP, rmq, везде где нужно не забыть освободить ресурсы.
@@PurpleSchool зачастую как раз нет, в отдельной горутине слушаем через канал сигнал SIGINT и там уже закрываем все коннекты и тд. Для короткоживущих некоторые делают через defer, но на самом деле часто нет никакой проблемы и без него закрыть соединение
Только при условии, если ты в одном месте это используешь. Если функция набирает популярность, try/catch становится бойлерплейтом