TypeScript 2.3 — последняя версия ежеквартального выпуска от команды TypeScript. Этот выпуск содержит несколько полезных дополнений к TypeScript, которые мы уже начали использовать в некоторых наших текущих проектах. Давайте посмотрим поближе!
Аргументы типа по умолчанию
Казалось бы, простое изменение — возможность предоставлять значения по умолчанию для общих аргументов. Преимущество для инженеров заключается в том, что он изменяет сигнатуры типов, которые могут быть особенно сложными. Вот пример, в котором мы определяем структуру API для создания структур виджетов в Dojo 2 из:
export function w<P extends WidgetProperties>(widgetConstructor: WidgetBaseConstructor<P> | string, properties: P, children?: DNode[]): WNode; export function w<P extends WidgetProperties>(widgetConstructor: WidgetBaseConstructor<P> | string, children: DNode[]): WNode; export function w<P extends WidgetProperties>(widgetConstructor: WidgetBaseConstructor<P> | string): WNode; export function w<P extends WidgetProperties>(widgetConstructor: WidgetBaseConstructor<P> | string, propertiesOrChildren: P | DNode[] = <P> {}, children: DNode[] = []): WNode { let properties: P; if (Array.isArray(propertiesOrChildren)) { children = propertiesOrChildren; properties = <P> {}; } else { properties = propertiesOrChildren; }
к более краткой, ясной и удобной версии той же концепции:
export function w<P extends WidgetProperties = WidgetProperties, C extends WidgetProperties = WidgetProperties>(widgetConstructor: WidgetBaseConstructor<P, C> | string, properties: WidgetProperties & P, children: DNode<C>[] = []): WNode<P, C> {
После того, как мы внесли эти модификации для поддержки универсальных типов по умолчанию, мы смогли еще больше усовершенствовать наш подход:
export function w<W extends WidgetBaseInterface>(widgetConstructor: Constructor<W> | string, properties: W['properties'], children: W['children'] = []): WNode<W> {
Эти улучшения просты в реализации и уже доступны в Dojo 2. В наших API часто есть значения по умолчанию для информации, которая на самом деле не важна для API. Аргументы типов по умолчанию позволяют нам перестать думать о неиспользуемых дженериках, тем самым упрощая определения типов. Сексуально, правда?!
Проверка типов в файлах JavaScript
В одном из наших предыдущих подкастов SitePen мы подробно обсудили отрицательную точку зрения на то, что TypeScript — это система, которая требует печатать все заранее. TypeScript 2.3 пытается решить эту проблему, и теперь можно запускать TypeScript для файлов JS, используя два варианта:
checkJs
- введите проверить все файлы JS в вашем проекте@ts-check
— комментарий к файлу для проверки подмножества файлов JS.
Другие дополнения к TS 2.3
Помимо исправлений ошибок и незначительных улучшений, в TypeScript 2.3 есть и другие заметные дополнения:
- Поддержка плагинов языкового сервера: поддержка альтернативного языкового синтаксиса, например поддержка шаблонов Angular, GraphQL, Vue.js и т. д.
- Генератор и асинхронный генератор для ES3 и ES5
- Упрощение настройки и помощи
Резюме
Команда TypeScript продолжает улучшать рабочий процесс и возможности разработки с помощью TypeScript. Мы уже обновили нашу работу, чтобы использовать аргументы типа по умолчанию, и мы с нетерпением ждем изучения поддержки плагина языкового сервера в ближайшем будущем.
Первоначально опубликовано на SitePen.com