10-12-2018 20:51

Microsoft выпустила TypeScript 3.2

TypeScript 3.2TypeScript 3.2rawpixel

Разработчики заменили обсценную лексику в ядре Linux словом «hugs»Вам будет интересно:Разработчики заменили обсценную лексику в ядре Linux словом «hugs»

Microsoft выпустила обновление TypeScript под номером 3.2. Этот язык программирования расширяет возможности JavaScript по части статической проверки типов данных. Обновление также включает в себя новейшие функции JavaScript из стандарта ECMAScript.

Строгая проверка методов

В TypeScript 3.2 вводится более строгая проверка для bind, call и apply. Эти методы позволяют, в частности, вызывать функции с другим значением, а также функции с массивом их аргументов. Для запуска более строгой проверки используется флаг strictBindCallApply.

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

Расширение объектов на обобщённые типы

В JavaScript поддерживается удобный способ копирования свойств существующего объекта в новый. Наибольшее распространение такая схема получила в пересечённых типах Foo и Bar, так называемых метапеременных, а также — в функции Object.assign.

В TypeScript ранее этот способ не работал для всех обобщённых типов (так называемых дженериков). Версия 3.2 получила поддержку этой возможности.

Оператор Rest для обобщённых типов

Если в предыдущем случае речь шла о копировании всех свойств того или иного объекта, то оператор Rest для обобщённых типов позволяет создавать новый объект, который не наследует некоторых свойств оригинального.

let { x, y, z, ...rest } = obj;

Наследование конфигурации через node_modules

Долгое время TypeScript поддерживал расширенные файлы tsconfig.json с использованием поля extends. Эта функция полезна, чтобы избежать дублирования конфигурации, однако это хорошо работает только в случае, если несколько проектов находятся в одном репозитории и ссылаются на общий файл tsconfig.

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

TypeScript 3.2 теперь разрешает загружать tsconfig.json из папки node_modules. При использовании пустого пути для поля extends в tsconfig.json TypeScript загрузит данные из node_modules. Подобное будет нужно в крупных проектах с большим количеством распределённых зависимостей.

Также теперь компилятор TypeScript, поддерживает новый флаг с именем –showConfig. Этот флаг позволяет выводить на экран содержимое tsconfig.json, чтобы найти ошибку или внести коррективы.

BigInts

Новый простой тип bigint (все буквы строчные) позволяет использовать сколь угодно большие числа в TypeScript. Это нововведение из ECMAScript и работает только в рамках ES.Next. Этот термин является динамическим и автоматически ссылается на новую версию ECMAScript, в которой при каждом обновлении добавляются функции.

Использование типов number и bigint в одной и той же арифметической операции недопустимо. Необходимо явно преобразовывать значения в bigint. Для этого можно воспользоваться функцией BigInt() или вписать литерал n в конец числа:

let foo: bigint = BigInt(100); // функция BigInt
let bar: bigint = 100n; // литерал BigInt

Также отметим, что bigint поддерживается только в Node 11 и последних версиях браузера Chrome.

Объявление Object.defineProperty в JavaScript

При записи в файлы JavaScript с помощью allowJs TypeScript 3.2 теперь распознаёт объявления, использующие Object.defineProperty. Это позволяет проводить более тщательную и строгую проверку типов при включении соответствующей возможности в файлах JavaScript путём активации allowJs или добавления комментария // @ts-check в начало файла.

Поддерживаемые редакторы

На текущий момент поддержка TypeScript 3.2 есть в следующих редакторах:

  • Visual Studio 2017 (для версии 15.2 или более поздней).
  • Visual Studio 2015 (требуется обновление 3).
  • Visual Studio Code (нужно обновить версию до полной).
  • Sublime Text 3 через PackageControl.

В других редакторах обновление до TypeScript 3.2 ожидается в ближайшее время. Также Microsoft обещает исправление ошибок и оптимизацию для удобства работы.

TypeScript представляет собой язык программирования, созданный Microsoft в 2012 году. Он позиционируется как система разработки веб-приложений, которая расширяет и дополняет возможности JavaScript. Предыдущая версия 3.1 вышла 27 сентября 2018 года и получила улучшенный рефакторинг, сопоставленные кортежи и typesVersions, а начало ветки 3.0 вышло в сентябре. Главным нововведением этой версии стала возможность масштабирования и структурирования пользовательских проектов.



Источник