Polski frontend

Piotr Kowalski — JavaScript, Front-end oraz Node.js

Co to jest runtime?

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 czasie 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ą kompilatora tsc 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 https://www.oracle.com/java/technologies/javase-jre8-downloads.html 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 napisane 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