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? Хлопайте 👏, чтобы сказать «спасибо!» и помогите другим найти эту статью.