Рубріки: Back-endFront-endДумка

Навіщо нам статична типізація JavaScript

Алекс Монахов

Як виконується наш JavaScript код? Виділю декілька ключових фаз.

  1. Перетворення в байт-код;
  2. Виконання;
  3. Оптимізація

З пунктом 1 все зрозуміло.

Пункт 2. V8 або інший рантайм ранить байт-код і збирає статистику його використання.

Пункт 3. Тут, на основі зібраної статистики використання нашого коду, будуються припущення, як його можна оптимізувати. Тобто виводяться типи наших змінних і на основі цього відбувається компіляція в машинний код.

Таким чином ми бачимо, що для того, щоб привести наш JS до максимально ефективного представлення, потрібен час, щоб зібрати статистику використання нашого коду. Далі, провести аналіз, зробити певні припущення, на основі яких виконати оптимізації й компілювати наш код в машинний.

Це все можливо було б спростити, якшо б у нас типи були з самого старту, тобто, ми б могли привести наш JS до максимально ефективної форми швидше. Можливо навіть без шару байт-коду, а одразу білдити машинний код на основі типів.

До речі, це не нова ідея — до нинішньої архітектури V8 (Ignition + TurboFan) був V8 (Crankshaft), який якраз і робив компіляцію одразу з JavaScript до машинного коду. Це приводило до певних проблем, але пост не про це.

Тому статична типізація у JavaScriptс дає нам:

  1. Те, за що ми так любимо TypeScript, тільки без TypeScript.
  2. Перфоманс, бо рантайму стане значно легше оптимізувати наш код.

Цей текст взято з особистого блогу після отримання дозволу автора.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Останні статті

AI-консультант у компанії: як Knowledge Bot економить час і гроші

Щосекундно збільшується обсяг інформації в мережі. Бізнес збирає дорогоцінні байти даних, структурує їх, аналізує і…

08.09.2025

AI Engineer у сучасному технологічному стеку: трансформація процесів розробки програмного забезпечення

Штучний інтелект (ШІ) вже не просто модне слово, а рушійна сила, що змінює саму суть…

21.08.2025

Алгоритми консенсусу майбутнього: DAG, BFT, DPoS

Алгоритм консенсусу – це серце будь-якого блокчейна. Саме він визначає, хто і як записує нові…

12.08.2025

CSR у Next.js. Як працює і що у нього під капотом

Зайшов на сторінку, а там — спінери, skeleton і порожнеча? Це не баг, це —…

31.07.2025

Чому я пишу про факапи?

Таке запитання мені поставив мій знайомий, коли побачив мій профіль. Я настільки над цим задумалась,…

30.07.2025

Як налаштувати штучний інтелект з унікальною базою знань? (безкоштовно)

Нещодавно я вписався в один цікавий проєкт. Довелося розібратись з процесом звітності американських фармацевтичних компаній…

29.07.2025