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

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

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

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

30.07.2025

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

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

29.07.2025

Одного разу я сильно посварився з СЕО компанії або Коли треба вчасно зупинитися і вміти сказати «ні»

Одного разу я сильно посварився з СЕО компанії. Він кричав на мене, а я у…

28.07.2025

Навіщо тестові, коли є портфоліо?

Одразу два офтопи: Я також виконувала тестові; Тестове має бути коротким, чітким, і, бажано, оплачуваним.…

25.07.2025

Припиніть писати код, як ніби ви працюєте в Google

Давайте відразу розставимо крапки над «і». Ви не працюєте в Google. Я теж. Більшість з…

24.07.2025

Штучний інтелект Tesla. Навіщо?

Моя Tesla зробила мене поганою водійкою. Я завжди приїжджала на кілька хвилин пізніше, ніж передбачав…

23.07.2025