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