Теперь доступен последний выпуск типизированного расширенного набора JavaScript от Microsoft. TypeScript 2.3 включает генераторы и итерацию для ES5 / ES3, общие значения параметров по умолчанию и многое другое.
По словам Даниэля Розенвассера, написавшего в блоге MSDN,
Ранее TypeScript не поддерживал компиляцию генераторов или работу с итераторами. В TypeScript 2.3 он не только поддерживает оба, но и поддерживает новые асинхронные генераторы и асинхронные итераторы ECMAScript.
Разница между AsyncIterator и Iterator заключается в том, что методы next, return и throw для AsyncIterator возвращают Promise для результата итерации, а не самого результата. Это позволяет вызывающему абоненту присоединиться к асинхронному уведомлению на время, когда AsyncIterator продвинулся до точки выдачи значения. AsyncIterator имеет следующую форму:
В TypeScript 2.3 добавлена поддержка объявления значений по умолчанию для параметров универсального типа, что позволяет избавиться от большого количества наборов текста. Стандартный параметр по умолчанию подчиняется следующим правилам:
Параметр типа считается необязательным, если он имеет значение по умолчанию.
Параметры обязательного типа не должны следовать за параметрами необязательного типа.
Типы по умолчанию для параметра типа должны удовлетворять ограничению для параметра типа, если оно существует.
При указании аргументов типа от вас требуется только указать аргументы типа для требуемых параметров типа. Параметры неопределенного типа будут преобразованы в их типы по умолчанию.
Если указан тип по умолчанию и вывод не может выбрать кандидата, выводится тип по умолчанию.
Объявление класса или интерфейса, которое объединяется с существующим объявлением класса или интерфейса, может вводить значение по умолчанию для существующего параметра типа.
Объявление класса или интерфейса, которое объединяется с существующим объявлением класса или интерфейса, может вводить новый параметр типа, если он указывает значение по умолчанию.
Для Розенвассера — новый режим проверки типов с использованием комментариев для указания типов в обычных объявлениях JavaScript. занимает первое место в списке новых функций. Он пишет:
В TypeScript уже давно есть возможность постепенного переноса файлов с JavaScript на TypeScript с помощью флага —allowJs; однако одна из распространенных проблем, которые мы слышали от пользователей JavaScript, заключалась в том, что миграция кодовых баз JavaScript и получение первых преимуществ от TypeScript были трудными. Вот почему в TypeScript 2.3 мы экспериментируем с новой «мягкой» формой регистрации файлов .js, которая дает многие преимущества написания TypeScript без фактического написания файлов .ts.
Вместо этого все, что вам нужно сделать для проверки типа файла, — это добавить комментарий с // @ ts-check вверху.
Розенвассер также объясняет, как TypeScript 2.3 упрощает начало работы с Typescript и обнаружение его функций. Это стало ответом на обнаружение того, что люди часто не знали, что TypeScript может работать с файлами JavaScript или что он может обнаруживать ошибки, связанные с нулевым значением. Чтобы сделать TypeScript более доступным, был улучшен вывод справки: параметры сгруппированы по темам, а более сложные / менее распространенные параметры по умолчанию пропускаются, а в выходных данных init перечислены возможные параметры в комментариях.
Чтобы обеспечить оптимальное взаимодействие с разработчиками, TypeScript 2.3 представляет новый флаг —strict, который будет включен по умолчанию для всех новых проектов, запускаемых с помощью tsc —init. Он включает следующие настройки:
Последний из них применяет строгий режим JavaScript во всех файлах.
Согласно плану развития TypeScript, следующий выпуск языка, версия 2.4, будет включать ковариантную проверку параметров обратного вызова, перечисления строк, поддержку рефакторинга в Language Service API и улучшенную отчетность об ошибках.