ТюленITь 🦭
21 subscribers
68 photos
1 video
13 links
Нить рассуждений о технологиях, разработке программного обеспечения и о тюленчиках https://tyulenit.com
Download Telegram
Так что там у нас новенького… а опять typescript, а я думал рыбка 🐟
Typescript иногда ведет себя очень странно
Но думаю что eslint такой ерунды в одном файле точно не допустит
This media is not supported in your browser
VIEW IN TELEGRAM
Настроенные линтеры всегда дадут лишнюю минутку на отдых
Так что тут у нас? Плыву обновляться 🦭
Со дня последнего сообщения прошло уже почти 3 месяца, что говорит от том что автор этого канала решил не постить полезный контент. Хорошо майкрософт все это время не останавливался и готовил новую версию typescript 5.3. Из интересного - на 20% легче и type annotations https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/
Только вышел из спячки 🦭
Лучше и не скажешь
Forwarded from В IT чудес не бывает (Maxim Shulga)
В этот раз тег #holywar сразу в заголовке: можем ли мерять продуктивность?
Один из моих любимых вопросов на собесе: в чем разница между производительностью и продуктивностью. Обычно обширное поле для рассуждений.
А эта короткая старая статья в свое время похоже заложила фундамент того, что я сейчас понимаю под эффективной работой и сеньорностью. Это понимаешь только спустя годы :)
There's No Such Thing As Software Productivity
Тезисы:
• Разработка ПО не является деятельностью, которая обязательно производит что-либо
• То что делают хорошие разработчики - они устраняют проблемы
• Ты не можешь измерить разницу продуктивности между хорошим и плохим разработчиком потому что там нет ничего, что можно измерить
• Если мы смогли решить проблему, вообще ничего не создавая, то все, что мы на самом деле производим - деньги на ветер

PS рубрика "листая дневничок": это я наткнулся на свою запись в блоге про эту статью.
PS2 А хорошо, до сих пор хорошо: "Добавить нечего. Надо просто вбить себе это directly в мозг! Лучше гвоздями." (с) Шульга

#metrics #it_философия
Устраняю проблему хранения рыбы 🐟
Forwarded from © Как его там… (Dmitry Remezov)
TypeScript Enums

TLDR: Используйте обычные объекты + as const / satisfies, забудьте про enum.

Енамы - один из немногих активно используемых атавизмов, оставшихся от экспериментов TS над расширением языка и одна из немногих его НЕ type-level фичей.
Область применения понятна - именованная группа констант-токенов, что же с ними не так и что делать?

Не нативная конструкция

TS давно изменил свою стратегию на "Мы не расширяем язык", enum (как и `namespace/experimentalDecorators`) - древний реликт вне современного TS.

Контринтуитивный результат

В рантайме мы получаем специфичный отзеркаленный объект, из которого банально нельзя понять, что ключ, а что значение.
Mind blowing решение, удачи с Object.keys/values.

const enum просто не работают

Казалось бы, красивое решение - в рантайме инлайним значение и enum испарился, но, помимо того, что это не работает нигде, кроме tsc, у const enum есть целый спектр фундаментальных дыр (`isolatedModules`, type import, импорт из библиотек), что подробно описано в хендбуке самого TS: https://www.typescriptlang.org/docs/handbook/enums.html#const-enum-pitfalls.
Это мертворожденная фича.

enum - номинальная типизация, а ВЕСЬ TS - структурная

TS построен на структурной типизации с понятными бенефитами, но enum, просто берет и работает по-другому!
Значения разных енамов не равны ни друг другу, ни литералам, ничему, кроме себя самих (да, изредка мы хотим такое поведение, но, блин, не в енамах).
Это накладывает окраску кода, хардкод, приведение типов и прочие приседания ради классического "шоб TS не ругался".

Обычные объекты + as const

Всё, что дают енамы, можно выразить через обычные объекты + as const / satisfies!
Всё (в 100 раз больше) 🥹
Можно не создавать лишнюю прослойку c токенами, а сразу писать конфиг.
Можно прозрачно работать как с ключами, так и со значениями.

Можно использовать все возможности TS и почти ничего не терять.
Не теряйте :)

P.S. Ложка мёда: благодаря номинальному дизайну енамов нам легко искать места использования 😏

#typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В жизни главное все делать правильно, а не правильно не делать. Например, красиво прыгать- это правильно 👍
Отличная статья которая очень доступно показывает, как работает LLM он же Chat GPT https://ig.ft.com/generative-ai/
Попросил у midjourney сгенерировать много рыбки 🐟, а он мне картинки какие-то прислал. А кушать так хочется
После супер-продолжительного молчания, врываюсь в новый год с новым дизайном блога (кого это интересует O_o) и статьей про то как лучше работать с локаными mobx моделями в react.

RU: https://tyulenit.com/ru/blog/2025-01-17-usereactmodel/
EN: https://tyulenit.com/en/blog/2025-01-17-usereactmodel/
Когда поймал рыбку 🐠 и сразу захотел ей поделиться 🎁, хотя не собирался вроде...
Вот и продолжение эпопеи с локальными моделями. Предыдущее решение содержало ряд неприятных недостатков и поэтому встречайте https://github.com/lexich/react-mobx-local-model решение, вообще без недостатков. Библиотека, которая решит все вопросы, особенно если это касается локальных mobx моделей в react. Мы же все здесь для этого собрались? Правда? 🥹

Ну и конечно небольшие заметки по этой теме.

RU: https://tyulenit.com/ru/blog/2025-01-29-react-mobx-local-model/
EN: https://tyulenit.com/en/blog/2025-01-29-react-mobx-local-model/
Вот это я штуку придумал себе, теперь буду чиллить в 2 раза эффективнее 🦭