Рубріки: 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.

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

В чому різниця між фіксом та «костилем»?

Оце сиджу, працюю і задумався: «А де ж проходить та тонка межа між фіксом, який…

04.06.2025

Закон Гудгарта або як метрики змінюють цінності

«Коли вимірюваний показник стає метою, він перестає бути хорошою мірою» Закон який значною мірою відповідальний…

03.06.2025

Як приймати обдумані рішення за допомогою ChatGPT? Приклади промптів

Інколи здається, що ви врахували все. Упевненість у рішенні настільки висока, що ви вже подумки…

02.06.2025

Чи можете ви програмувати, не дивлячись на екран?

Блогер та розробник Джозеф Круз розповів, як він працює програмістом, маючи доволі серйозні проблеми із…

23.05.2025

Як швидко полегшити головний біль. Три науково доведені способи

Голова може боліти з безлічі причин. Але один з найпоширеніших різновидів — так званий головний…

22.05.2025

Цінність або дизайн?

Коли розробляється MVP, ти маєш дуже обмежені ресурси — зазвичай і по складу команди, і…

21.05.2025