Runtime — czas wykonania programu. I tutaj mógłbym zakończyć wpis, ale postanowiłem, że go jeszcze trochę rozwinę. Co to właściwie znaczy “runtime”?
Błąd został zauważony w runtime, czy kompilacji?
Zdefiniujmy dwa ważne procesy:
Kompilacja, czyli stworzenie pliku programu, na podstawie kodu źródłowego, który będzie mógł być uruchomiony w środowisku uruchomieniowym.
Przykład:
Kod w TypeScript, aby został uruchomiony w przeglądarce, musi zostać skompilowany za pomocą kompilatoratscdo składni języka JavaScript.
oraz:
Runtime, czyli czas liczony od momentu, w którym program zostaje uruchomiony, działając w swoim środowisku uruchomieniowym, aż do momentu jego wyłączenia.
Przykład:
Aplikacja uruchomiona w przeglądarce posiada swój runtime, dopóki użytkownik nie zamknie taba.
“Runtime do uruchomienia języka X”
Często w rozmowie między developerami, możemy usłyszeć, że słowem “runtime” zostało opisane “narzędzie”, a może nawet środowisko, które uruchamia programy.
Przykłady z najpopularniejszych narzędzi typu “runtime”:
- Node.js
- Oryginalny opis projektu: Node.js JavaScript runtime
- https://github.com/nodejs/node
- Deno
- Oryginalny opis projektu: A secure runtime for JavaScript and TypeScript (dziś: A modern runtime for JavaScript and TypeScript)
- https://github.com/denoland/deno
- Java Runtime Environment
- https://www.oracle.com/java/technologies/javase-jre8-downloads.html
- (Aktualizacja 2026: od Javy 11 Oracle nie wydaje osobnego JRE - środowisko
uruchomieniowe jest częścią JDK albo buduje się je narzędziem
jlink)
Błędy
z kompilacji pliku napisanego w TypeScript do składni JavaScript:
TS2322: Type '(p: any) => void' is not assignable to type 'void'.
TS2339: Property 'url' does not exist on type 'Page'.
TS2307: Cannot find module './service'.
TS2529: Duplicate identifier 'Promise'.
z runtime-u aplikacji napisanej w JavaScript uruchomionej w przeglądarce:
Uncaught TypeError: undefined is not a function
Uncaught ReferenceError: foo is not defined
Uncaught TypeError: Converting circular structure to JSON
Uncaught TypeError: Cannot read property ‘foo’ of null
Uncaught RangeError: Maximum call stack size exceeded
(Aktualizacja 2026: od Chrome 93 ten błąd z null brzmi
Cannot read properties of null (reading 'foo').)
Cya! 👋