Chrome V8 теперь может собирать информацию о типе во время выполнения

Получите такие типы, как строка, число, null или настраиваемые классы во время выполнения. V8 теперь может собирать информацию о типе. V8 - это движок JavaScript с открытым исходным кодом от Google. Chrome, Node.js и многие другие приложения используют V8. Профайлер этого типа встроен в движок, информация не выводится статически.

JavaScript - это язык с динамической типизацией. Но большая часть кода написана с учетом фиксированных типов. При отладке JavaScript полезно знать типы переменных и параметров во время выполнения. Часто бывает трудно определить типы для сложного кода. Профилирование типов предоставляет эту информацию во время выполнения.

function foo(x) {
    if (x < 2) {
      return 42;
    }
    return "What are the return types of foo?";
  }

Статическое определение foo() не содержит никакой информации о параметрах, с которыми вызывается foo. В этом простом случае мы можем вычесть возвращаемые типы number и string. Однако в более сложных случаях это часто невозможно. Но во время выполнения ясно, с какими типами вызывается foo. Информация о типе среды выполнения собирает именно эту информацию.

Профилирование типов реализовано в V8 и может использоваться через протокол инспектора V8. Если у вас есть Node.js с новейшим V8, вы можете протестировать его сами. Через несколько недель новый V8 появится в Node, а профиль типа будет доступен в обычных выпусках Node.

Один из предполагаемых вариантов использования - автоматическое создание аннотаций JSDoc, TypeScript или Flow. Поскольку профилирование типов доступно через Инспектор узлов, вы можете создавать свои собственные инструменты с его помощью в соответствии с вашими потребностями. Вот демонстрация, демонстрирующая некоторые базовые принципы использования.

Я с нетерпением жду всех инструментов, которые сообщество предложит для этого профиля использования.

Я с нетерпением жду всех инструментов, которые сообщество предложит для этого профиля использования. Я уверен, что есть много вариантов использования, которые я еще даже не рассматривал. Если вы уже работаете над прототипом, поделитесь!

В восторге от профиля типа среды выполнения в JavaScript? Хлопайте 👏, чтобы сказать «спасибо!» и помогите другим найти эту статью.

Посетите мой блог, чтобы узнать больше о V8 и Node.js ✨🐢🚀✨