Компании Microsoft, Igalia и Bloomberg выступили с инициативой включения в спецификацию JavaScript синтаксиса для явного определения типов, похожего на синтаксис, применяемый в языке TypeScript. В настоящее время прототип изменений, предложенный для включения в стандарт ECMAScript, вынесен для предварительных обсуждений (Stage 0). На ближайшем мартовском заседании комитета TC39 планируется перейти на первую стадию рассмотрения предложения с привлечением экспертного сообщества из ECMA.
Наличие явно заданной информации о типах позволит избежать многих ошибок в процессе разработки, даст возможность задействовать дополнительные техники оптимизации, упростит отладку и сделает код более читаемым и простым для доработки и поддержки сторонними разработчиками. Поддержку типов предлагается реализовать в виде опциональной возможности - JavaScript-движки и runtime не поддерживающие проверку типов будут игнорировать аннотации с информацией о типах и обрабатывать код как раньше, воспринимая данные о типах как комментарии. Но инструменты для проверки типов смогут на основе доступной информации выявлять ошибки, связанные с некорректным использованием типов.
При этом в отличие от информации о типах, задаваемой при помощи аннотаций JSDoc, указываемых в форме комментариев, прямое указание типов непосредственно в конструкциях определения переменных сделает код более наглядным, понятным и простым для редактирования. Например, интегрированные среды разработки с поддержкой TypeScript смогут сразу подсвечивать ошибки в типизированном JavaScript-коде без дополнительных преобразований. Кроме того, встроенная поддержка типов даст возможность выполнять программы, написанные на типизированных диалектах JavaScript, таких как TypeScript и Flow, без транспиляции из одного языка в другой.
Из типов предлагается добавить «string», «number» и «boolean», которые можно будет использовать при определении переменных, параметров функций, элементов объектов, полей классов, типизированных массивов («number[]»). Предлагается также обеспечить поддержку объединённых типов («string | number») и дженериков.
// cc-by https://www.opennet.ru/opennews/art.shtml?num=56850
це зрада или перемога? cast JavaScript