Microsoft выпустила TypeScript 3.2
Новости
В этой версии появилась строгая проверка методов, дополнительные возможности для обобщённых типов и новый простой тип bigint для чисел.
4К открытий4К показов
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 вышло в сентябре. Главным нововведением этой версии стала возможность масштабирования и структурирования пользовательских проектов.
4К открытий4К показов