Во время последнего заседания комитета TC39 Microsoft предложила ввести типы в JavaScript — но не так, как вы думаете.

Большая часть синтаксиса взята прямо из TypeScript, и Microsoft считает, что любой, кто знаком с ним, будет очень доволен новостями.

В предложении особо выделяются несколько преимуществ: улучшенная эргономика для разработчиков, инновации в инструментах и ​​унификация экосистемы.

С другой стороны, предложение на самом деле не предлагает сделать типы основной частью JavaScript, но идея состоит в том, чтобы позволить разработчикам писать типы, используя синтаксис TypeScript, и механизм JavaScript браузера будет рассматривать их как комментарии, это означает, что они игнорируются. но позволит таким инструментам, как TypeScript или Flow, предупредить нас, когда мы используем неправильный тип.

Что, если мы захотим включить проверку этих типов в будущем?

Команда Microsoft, стоящая за этим предложением, не думает, что это произойдет, поскольку это будет кардинальное изменение для всей сети, но поддержка новой директивы: "использовать типы"; может быть добавлено в будущем.

Будем ли мы отправлять лишний код?

Ну, риск уже есть (см. JSDoc), и каждый разработчик, который хочет уменьшить размер кода, уже использует минификаторы для удаления комментариев, с типами комментариев мы ожидаем того же.

Предлагаемый синтаксис(Синтаксис подлежит обсуждению!)

⚠️ Предложение не обновлялось после пленарного обсуждения TC39 в марте 2022 года. Детали, вероятно, изменятся в ближайшие дни.

Пример 1

function equals(x: number, y: number): boolean { 
   return x === y;
}

Пример 2

class Cat {
  name: string;
  // ...
}
function areCatsNameEqual(x: Cat, y: Cat): boolean {
    return x.name === y.name;
}

Пример 3

type Cat = { 
  name: string;
  // ...
};
function equals(x: Cat, y: Cat): boolean {
    return x.name === y.name;
}

Полное предложение и аннотации по адресу:

https://github.com/tc39/аннотации типа предложения