TGViewer
mefody.dev mefody.dev @mefody_dev · 5.39K subscribers
Post #25 2.61K
TypeScript 5.0 Beta

Крайне интересный релиз. Буквально позавчера вышел анонс беты TypeScript 5.0, который уже сейчас можно попробовать через npm install typescript@beta.

Важные для меня новинки:

- Декораторы. Не те экспериментальные, которые с нами чуть ли не со старта TS, а настоящие ECMAScript-декораторы. Теперь можно поиграться в мета-программирование, которое к тому же не будет ни во что транспилироваться, если target транспиляции уже умеет в эти самые декораторы. А самое главное, декораторы сразу умеют в типизацию, без чего странно было бы запускать такую вещь в релиз.

- В tsconfig теперь можно внутри extends писать массив. То есть не нужно больше изгаляться с хитрыми наследованиями конфигов, а достаточно собрать парочку для разных ситуаций и просто примиксовывать их к базовым. Например, для локального конфига мне обычно нужно заменить буквально пару настроек, но в проекте в разных папках лежат разные конфиги (для тестов, для кода, для тулзов). Можно собрать набор локальных настроек и добавлять его к основным, DRY.

- Все enum теперь union enum (не знаю, как корректно перевести). Это значит, что можно творить вот такое:

const BaseValue = 10;
const prefix = 'data';
enum Values {
First = BaseValue, // 10
Second, // 11
Third = ${prefix}/path, // 'data/path'
}
type FirstValue = Values.First;


и для каждого элемента будет создан свой уникальный тип, к которому можно обращаться для создания других типов, например. Раньше сам enum был типом, а значения — его частями. С этим можно интересно играться, но подключать к старой кодовой базе надо будет осторожно, потому что проверки на enum станут строже.

- Опция --verbatimModuleSyntax включает режим, когда при импорте типа из файла (`import type { Some} from 'some';`) просто дропает содержимое модуля (используется только для проверки типов), а во всех остальных случаях оставляет его в бандле. Хочу ещё разобраться, как это влияет на то, превращается код в require или в export, в описании фичи много про это, но нужно пробовать на практике.

- В режиме --build теперь можно передавать флаги --declaration, --emitDeclarationOnly, --declarationMap, --soureMap, --inlineSourceMap. Так будет можно удобнее настраивать tsc под различные сборки: локальную, тестовую, продакшен.

- TS сам по себе стал легче на 26.5 МБ. И это здорово как для сохранения места на диске, так и для передачи всякого по сети при установке пакета. В релизе пишут, что такая оптимизация в принципе привела к заметному ускорению работы TS.

Описание релиза большое. Почитайте обязательно. Я пересказал вкратце только самое интересное мне, но там есть и breaking changes, на которые точно нужно будет обратить внимание при обновлении.

https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/
  • 🔥 59
  • 👍 6
  • 😐 1
More from @mefody_dev
  1. Sep 25, 2026Эффект одометра Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я…
  2. Sep 23, 2026Цена ошибок гидрации В React есть много ухищрений, чтобы серверный кусок страницы обновилс…
  3. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  4. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  5. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
  6. Sep 10, 2026MicroLighter Дейв Руперт собрал маленькую библиотечку, которая делает подсветку кода. «Ещё…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →