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

TypeScript

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.

Источник: блог MSDN