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ą kompilatoratsc
do 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
- https://github.com/denoland/deno
- Java Runtime Environment
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: Invalid left-hand side in assignment
Uncaught TypeError: Converting circular structure to JSON
Uncaught TypeError: Cannot read property ‘foo’ of null
Uncaught RangeError: Maximum call stack size exceeded