Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Microsoft выпустила обновление TypeScript 2.5

Новости Отредактировано

Microsoft выпустила новую версию TypeScript. Собрали для вас основные нововведения, появившиеся по сравнению с прошлой версией.

2К открытий2К показов

Microsoft анонсировала выход новой версии TypeScript — надстройки над JavaScript, которая привносит статические типы и надежные инструменты. Ниже представлен список основных изменений по сравнению с версией 2.4.

Рефакторинг Extract Method и Extract Function

Помогает сделать объёмную перезапись кода тривиальной:

Новые быстрые исправления

TypeScript не поддерживает JSDoc-типы, но теперь он может их понимать и предлагать исправленный вариант:

Также подобные исправления полезны в случаях, когда пользователи пытаются неправильно ссылаться на тип свойства другого объекта. Например, используя данный

			interface Foo {
    bar: number;
}
		

интерфейс, пользователь захотел объявить переменную xyz, чей тип связан с типом bar. Он может написать неправильную конструкцию:

			// Присвоить xyz тип поля bar интерфейса Foo
var xyz: Foo.bar
		

TypeScript же автоматически предложит правильную версию:

Поддержка приведения JSDoc-типов в файлах JavaScript

Возможность приведения типов (type assertion) отсутствовала в предыдущих версиях. Она необходима, когда пользователь знает больше о типе данных, чем компилятор, и сообщает ему об этом. Рассмотрим пример:

			// @ts-check

var foo = Math.random() ? "hello" : 100;

foo.toUpperCase();
//  Ошибка! Свойства 'toUpperCase' не существует для типов 'number'.
		

TypeScript корректно определил, что пользователь вызывает несуществующий метод типа number. Для обработки подобной ситуации, а точнее, для аварийной остановки во время выполнения, пользователь может воспользоваться приведением типов:

			var bar = /** @type {string} */ (foo);
bar.toUpperCase();
		

Синтаксис обработчика:

			/** @type {тип_обрабатываемых_данных} */ (какое_либо_выражение)
		

Если пользователь разрешил JavaScript проверку файла, неверное приведение типов будет обнаружено:

			var clearlyNumber = /** @type {string} */ (100);
// Ошибка! Тип 'number' не может быть конвертирован в тип 'string'.
		

Необязательные условия в catch

			let contents;
try {
    contents = fs.readFileSync(".config_file").toString('utf8');
}
catch (unusedError) {
    // При отсутствии файла использовать параметры по умолчанию
    contents = createDefaultContents();
}
		

Обратите внимание, что на unusedError в данном примере нет ни одной ссылки. Пользователь теперь может просто игнорировать описание ошибок в блоке catch, делая код более читабельным:

			let contents;
try {
    contents = fs.readFileSync(".config_file").toString('utf8');
}
catch {
    // При отсутствии файла использовать параметры по умолчанию
    contents = createDefaultContents();
}
		

Задублированные и перенаправленные пакеты

Компилятор теперь сможет проверять, загружены ли файлы из «идентичных» пакетов. Если один из файлов загружен из пакета c package.json, содержащего такие же имена и версию полей, что и ранее встреченный пакет, то TypeScript переходит к обработке самого верхнего в иерархии из них. Это поможет решить проблему, когда оба пакета содержат идентичные описания классов, но один из которых содержит private объекты, что в свою очередь влияет на неопределённость использования.

В качестве приятного бонуса данная функция сокращает потребление памяти и времени работы компилятора за счёт прекращения загрузки .d.ts файлов из дубликатов.

Флаг компилятора --preserveSymlinks

Данный флаг переносит в TypeScript функциональность флага --preserve-symlinks из Node.js, а именно позволяет устанавливать зависимости на основе расположения символических ссылок, а не иерархии дерева. Этот флаг также имеет противоположный эффект флагу --resolve.symlinks инструмента Webpack (при установке --preserveSymlinks в true, --resolve.symlinks автоматически переводится в false, и наоборот).

Установка

Для начала использования новой версии её достаточно загрузить через менеджер пакетов NuGet или воспользоваться командой npm:

			npm install -g typescript
		

TypeScript 2.5 может быть установлен напрямую в среды разработок Visual Studio 2015 Update 3 и Visual Studio 2017 версии 15.2 и выше. Любители редакторов кода Visual Studio Code и Sublime Text уже сейчас могут настроить их для использования новой версии. Для запуска в других редакторах предлагается посетить страничку разработчиков.

Наслаждайтесь!

Как и всегда, полный список изменений доступен на wiki-страничке языка. Дорожную карту и будущее языка интересующиеся могут найти на GitHub.

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий2К показов