HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p>17 ноября 2021 года старший менеджер Microsoft Даниэль Розенвассер<a>объявил</a>о выходе TypeScript 4.5. Посмотрим на несколько наиболее значимых изменений.</p>
1 <p>17 ноября 2021 года старший менеджер Microsoft Даниэль Розенвассер<a>объявил</a>о выходе TypeScript 4.5. Посмотрим на несколько наиболее значимых изменений.</p>
2 <p>Модуль ECMAScript для Node.js 12 не получил постоянной поддержки, и его выпуск отложен до следующего релиза. В качестве временного решения разработчики могут подключить<a>ночную сборку TypeScript</a>. Даниэль Розенвассер<a>объяснил</a>, что большая часть экосистемы Node.js построена на модульной системе CommonJS (CJS) и для совместимости с ECMAScript (ESM) нужно больше обратной связи от пользователей.</p>
2 <p>Модуль ECMAScript для Node.js 12 не получил постоянной поддержки, и его выпуск отложен до следующего релиза. В качестве временного решения разработчики могут подключить<a>ночную сборку TypeScript</a>. Даниэль Розенвассер<a>объяснил</a>, что большая часть экосистемы Node.js построена на модульной системе CommonJS (CJS) и для совместимости с ECMAScript (ESM) нужно больше обратной связи от пользователей.</p>
3 <p>У сниппетов появилось два дополнения для редактирования языковых конструкций. Первое дополнение помогает завершать новые фрагменты при переопределении или реализации методов в классах. TypeScript заполняет имя, полную подпись, выставляет фигурные скобки и автоматически перемещает курсор в тело метода.</p>
3 <p>У сниппетов появилось два дополнения для редактирования языковых конструкций. Первое дополнение помогает завершать новые фрагменты при переопределении или реализации методов в классах. TypeScript заполняет имя, полную подпись, выставляет фигурные скобки и автоматически перемещает курсор в тело метода.</p>
4 Пример автозаполнения методов в подклассе. Изображение:<a>Microsoft</a><p>Второе дополнение предназначено для атрибутов JSX. TypeScript добавляет инициализатор, заполняет фрагменты кода и переносит курсор в место для записи.</p>
4 Пример автозаполнения методов в подклассе. Изображение:<a>Microsoft</a><p>Второе дополнение предназначено для атрибутов JSX. TypeScript добавляет инициализатор, заполняет фрагменты кода и переносит курсор в место для записи.</p>
5 Пример автозаполнения JSX-тегов. Изображение:<a>Microsoft</a><p>Для рекурсивного использования promise-объектов или операций в async-функциях можно обращаться к служебному типу Awaited. Новинка закрывает прошлые ошибки логического вывода Promise.all и помогает с моделированием действующих API.</p>
5 Пример автозаполнения JSX-тегов. Изображение:<a>Microsoft</a><p>Для рекурсивного использования promise-объектов или операций в async-функциях можно обращаться к служебному типу Awaited. Новинка закрывает прошлые ошибки логического вывода Promise.all и помогает с моделированием действующих API.</p>
6 // A = string type A = Awaited&lt;Promise&lt;string&gt;&gt;; // B = number type B = Awaited&lt;Promise&lt;Promise&lt;number&gt;&gt;&gt;; // C = boolean | number type C = Awaited&lt;boolean | Promise&lt;number&gt;&gt;;<p>Для встроенных библиотек появился новый способ переопределения - похожий на тот, что реализован в методе @types. Теперь первоочередной поиск проводится по пакетам @typescript/lib-* и это поможет разработчикам быстрее решать, какие файлы включить или не трогать. Например, если в опции lib включить dom, то TypeScript будет использовать его с типом node_modules/@typescript/lib-dom.</p>
6 // A = string type A = Awaited&lt;Promise&lt;string&gt;&gt;; // B = number type B = Awaited&lt;Promise&lt;Promise&lt;number&gt;&gt;&gt;; // C = boolean | number type C = Awaited&lt;boolean | Promise&lt;number&gt;&gt;;<p>Для встроенных библиотек появился новый способ переопределения - похожий на тот, что реализован в методе @types. Теперь первоочередной поиск проводится по пакетам @typescript/lib-* и это поможет разработчикам быстрее решать, какие файлы включить или не трогать. Например, если в опции lib включить dom, то TypeScript будет использовать его с типом node_modules/@typescript/lib-dom.</p>
7 <p>После определения нужных файлов можно установить связь с диспетчером и добавить пакет на замену библиотеке. Если ориентироваться на пример с dom, то достаточно привязать проект к различным версиям API-интерфейсов DOM на @types/web. Для этого необходимо прописать в файле package.json несколько строк кода, которые позволят обновить TypeScript и не потерять настроенные зависимости.</p>
7 <p>После определения нужных файлов можно установить связь с диспетчером и добавить пакет на замену библиотеке. Если ориентироваться на пример с dom, то достаточно привязать проект к различным версиям API-интерфейсов DOM на @types/web. Для этого необходимо прописать в файле package.json несколько строк кода, которые позволят обновить TypeScript и не потерять настроенные зависимости.</p>
8 { "dependencies": { "@typescript/lib-dom": "npm:@types/web" } }<p>Помимо обновлений синтаксиса, TypeScript 4.5 поддерживает realpathSync.native в Node.js во всех операционных системах - раньше функция была доступна только пользователям ОС Linux. Это повысит скорость загрузки проектов где-то на 5-13%.</p>
8 { "dependencies": { "@typescript/lib-dom": "npm:@types/web" } }<p>Помимо обновлений синтаксиса, TypeScript 4.5 поддерживает realpathSync.native в Node.js во всех операционных системах - раньше функция была доступна только пользователям ОС Linux. Это повысит скорость загрузки проектов где-то на 5-13%.</p>
9 <p>На Reddit большинство пользователей положительно отреагировали на обновления в TypeScript 4.5, но есть несколько замечаний. Так пользователю theQuandary не понравилось, что разработчики внедрили множество функций, но не позаботились об увеличении производительности компилятора. Даниэль Розенвассер ответил, что его команда уже работает над этим и добавит изменения в релизе<a>TypeScript 4.6</a>.</p>
9 <p>На Reddit большинство пользователей положительно отреагировали на обновления в TypeScript 4.5, но есть несколько замечаний. Так пользователю theQuandary не понравилось, что разработчики внедрили множество функций, но не позаботились об увеличении производительности компилятора. Даниэль Розенвассер ответил, что его команда уже работает над этим и добавит изменения в релизе<a>TypeScript 4.6</a>.</p>
10 <p><strong>theQuandary:</strong>Вместо множества функций я бы предпочёл, чтобы они работали над тем, чтобы сделать свой компилятор производительным. Это о-о-очень медленно на больших базах кода.</p>
10 <p><strong>theQuandary:</strong>Вместо множества функций я бы предпочёл, чтобы они работали над тем, чтобы сделать свой компилятор производительным. Это о-о-очень медленно на больших базах кода.</p>
11 <p><strong>DanielRosenwasser:</strong>Я полностью с вами согласен, но нужно расставлять приоритеты. Сообщения в блоге очень длинные (извините!), но в разделе "Что дальше?" основное внимание будет уделяться производительности и стабильности - план итераций представлю позже.</p>
11 <p><strong>DanielRosenwasser:</strong>Я полностью с вами согласен, но нужно расставлять приоритеты. Сообщения в блоге очень длинные (извините!), но в разделе "Что дальше?" основное внимание будет уделяться производительности и стабильности - план итераций представлю позже.</p>
12 Скриншот:<a>Reddit</a><p><strong>isaagrimn:</strong>Не буду обновляться, пока они не исправят автоимпорт на vscode. Нужно использовать '.' или '..', чего мы никогда не хотели делать, начиная с версии 4.4. Я очень взволнован, жду 4.6 и не могу терпеть проблемы с производительностью, которые возникают у меня при работе с большой кодовой базой.</p>
12 Скриншот:<a>Reddit</a><p><strong>isaagrimn:</strong>Не буду обновляться, пока они не исправят автоимпорт на vscode. Нужно использовать '.' или '..', чего мы никогда не хотели делать, начиная с версии 4.4. Я очень взволнован, жду 4.6 и не могу терпеть проблемы с производительностью, которые возникают у меня при работе с большой кодовой базой.</p>
13 Скриншот:<a>Reddit</a>
13 Скриншот:<a>Reddit</a>