Dlaczego nie jestem fanem TypeScript

TypeScript jest wolniejszy od JS, przy prostych iteracjach różnica jest kilkuprocentowa, ale przy złożonych operacjach różnica jest ogromna. Wynika to z budowy TS, który jest transpilowany do JS (plus dodatkowy narzut).

Osobiście uważam, że najważniejsza jest wydajność kodu i to ją się powinno optymalizować, a na drugim miejscu stawiam wygodę i szybkość pisania kodu. Szczególnie jest to ważne w projektach długofalowych, które mają z założenia pracować kilka lat. Czemu to jest takie ważne? Bo jak zabraknie nam mocy obliczeniowej w skalowaniu pionowym (coraz mocniejsza maszyna), musimy się przenieść na skalowanie poziome (cloud hosting, clustering, itd.). Koszt przepisania aplikacji 1-instance do klastrowej przekracza często 100% wartości projektu. dodatkowo koszt dostawienia nowej maszyny nie jest współmierny do wzrostu przychodu i firma decyduje się na straty związane ze skalowaniem albo ograniczenie dostępu do usługi i brak rozwoju, a podstawową zasadą każdej firmy jest rozwój (jeśli firma się nie rozwija, to umrze w przeciągu 5 lat). Dlatego lepiej wybrać szybki język i pisać kod 2 razy dłużej (koszt jednorazowy) niż płacić 3x więcej za hosting każdego miesiąca.

Dochodzi kolejna kwestia

Bezpieczeństwo typowania. O tym już wspomniałem kilka razy, że typowanie działa wyłącznie w obrębie naszego kodu. Problemem są dane wchodzące do apki z zewnątrz - czy to 3rd party API czy dane od użytkownika. To, że typujemy sobie jakąś zmienną na string to nie znaczy, że apka sama nam sprawdzi typ zmiennej po transpilowaniu. Jeśli nie dopiszemy kodu do sprawdzenia typu zmiennej ręcznie to wywalimy apkę, tak samo w JS. Dwa przykłady z życia wzięte - Zewnętrzne API zmienia swoją strukturę z dnia na dzień bez wystawiania wyższej wersji (podmieniają istniejące endpointy, niestety czasami się to zdarza). Jeśli nie napiszemy w kodzie TS/JS sprawdzania jaki typ nam wpada to uwalimy apkę. Drugi przykład to komunikacja Frontend/Backend. Robimy sobie wspólne interefejsy na wymianę danych (np. logowanie email/hasło - 2 stringi), w TS wszystko nam się pięknie kompiluje na froncie i backu, ale nie napisaliśmy linijki do sprawdzenia typu i zamiast stringów wysyłamy obiekty. Wywalamy apkę na backu.

Retranspilacja kodu

Każda zmiana w kodzie to kompilowanie całej aplikacji, zajmuje to kilka sekund, ale jeśli w ciągu 8 godzin pracy musimy kompilować kod 300 razy to mamy stracone 15-30 minut na czekaniu. A co jak mamy poważny błąd w kodzie i trzeba szybko naprawić produkcję? W JS można zrobić poprawkę w Git, wrzucić na serwer i zrobić restart 1 usługi, a jak coś jest mega pilne to możemy zmianę wprowadzić od razu na serwerze i zrobić szybki restart - w idealnym świecie nie ma miejsca na takie akcje, ale praktyka wygląda inaczej. Osobiście kilkanaście razy naprawiałem tak błędy w wersji produkcyjnej. W TS nie możemy bezpośrednio edytować kodu, musimy edytować źródła i odpalać kompilator, co zajmuje dużo czasu. Jeśli nie do końca wiemy czy zmiana pomoże to tracimy kupę czasu, a produkcja wisi.

Typowanie jest super

ale tylko jeśli jest natywnie wbudowane w język (Java, Rust). Jeśli dochodzi do transpilacji kodu to jesteśmy w dupie. Dodatkowo uważam, że najlepsze są języki elastyczne - typujesz jeśli chcesz, a nie musisz. Świetnie zapowiada się Deno, nowe dziecko twórcy Node. W Deno jest natywnie wbudowany kompilator TypeScript. Kodujemy w TS i wirtualna maszyna transpiluje kod do Rusta. Nie ma problemu z wydajnością jak w przypadku TS do JS do V8. niestety Deno to raczkujący projekt i nie mamy pewności, że pewnego dnia ujrzymy stabilną wersję.

A tak na koniec pół żartem, pół serio - jeśli potrzebujesz typowania, bo gubisz się w kodzie to jesteś gamoń, nie programista 😛

Content

Got a project?

Let's talk!

__wf_zastrzeżone_dziedziczyć
Technologies
Technologies
HTML - co to?
arrow icon
3.20.2024
2 min czytania
Technologies
What is HTML?
arrow icon
3.21.2024
2 min read
Technologies
Technologies
TypeScript? - co to?
arrow icon
3.20.2024
3 min czytania
Technologies
What is TypeScript?
arrow icon
3.20.2024
3 min read
Technologies
Technologies
PHP - co to?
arrow icon
3.19.2024
1 min czytania
Technologies
What is PHP?
arrow icon
3.19.2024
1 min read
Technologies
Technologies
Swift - co to?
arrow icon
3.18.2024
5 min czytania
Technologies
What is Swift?
arrow icon
3.18.2024
5 min read
Technologies
Technologies
Kotlin - co to?
arrow icon
3.16.2024
4 min czytania
Technologies
What is Kotlin?
arrow icon
3.16.2024
4 min read
Technologies
Technologies
Vue.js - co to?
arrow icon
3.15.2024
3 min czytania
Technologies
Technologies
What is Vue.js?
arrow icon
3.15.2024
3 min read
Technologies
Technologies
JAVA - Co to?
arrow icon
3.14.2024
4 min czytania
Technologies
What is JAVA?
arrow icon
3.13.2024
2 min read
Technologies
Technologies
React Native - co to?
arrow icon
3.13.2024
3 min czytania
Technologies
What is React Native?
arrow icon
3.13.2024
3 min read
Technologies
Technologies
React.js - co to?
arrow icon
3.13.2024
2 min czytania
Technologies
What is React.js?
arrow icon
3.13.2024
2 min read
Technologies
Node.js - co to?
arrow icon
3.13.2024
1 min czytania
Technologies
What is Node.js?
arrow icon
3.13.2024
1 min read
Technologies
Technologies
JavaScript - co to?
arrow icon
3.13.2024
1 min czytania
Technologies
What is JavaScript?
arrow icon
3.13.2024
1 min read
Knowledge hub
Knowledge hub
Kim jest fullstack developer?
arrow icon
3.13.2024
1 min czytania
Knowledge hub
What is a fullstack developer?
arrow icon
3.13.2024
1 min read
Knowledge hub
Knowledge hub
Co to jest frontend?
arrow icon
3.13.2024
2 min czytania
Knowledge hub
What is frontend?
arrow icon
3.13.2024
2 min read
Knowledge hub
Knowledge hub
Co to jest backend?
arrow icon
3.13.2024
2 min czytania
Knowledge hub
What is backend?
arrow icon
3.13.2024
2 min read
Business
Business
Profesjonalna aplikacja dla firmy - 10 wskazówek
arrow icon
5.12.2023
7 min czytania
Business
Business
Doradztwo IT - korzyści dla Twojej firmy
arrow icon
3.21.2023
6 mi czytania
IT
How to get started in IT?
arrow icon
3.6.2023
7 min read
IT
WEB3 - What is it? Introduction
arrow icon
2.21.2023
4 min read
Code
Code
Czy MobX to dobra alternatywa dla Redux?
arrow icon
2.1.2023
3 min czytania
UX/UI
UX/UI
UX Design - przewodnik dla programistów
arrow icon
1.30.2023
4 min czytania
Code
Code
Podstawy React’a - stan i hook useState
arrow icon
1.26.2023
5 min czytania
Startup
Startup
Startup - z jaką firmą IT współpracować?
arrow icon
12.20.2022
11 min czytania
Business
Business
Najlepszy kraj do outsourcingu IT
arrow icon
12.12.2022
4 min czytania
Business
Business
Jak zmienić firmę programistyczną?
arrow icon
12.2.2022
4 min czytania
Business
Business
Outsourcing IT- kompletny PRZEWODNIK!
arrow icon
11.28.2022
3 min czytania
Business
Business
Team Augmentation - Korzyści!
arrow icon
11.23.2022
9 min czytania
Business
Business
W co inwestować pieniądze w 2021 roku?
arrow icon
11.21.2022
3 min czytania
Business
Business
Praca w różnych strefach czasowych. Jak to działa?
arrow icon
11.18.2022
7 min czytania
Startup
Startup
Co to jest startup? (Nowoczesne Przedsiębiorstwo)
arrow icon
11.17.2022
6 min czytania
Business
Business
Co to jest outsourcing pracowników IT i ILE kosztuje
arrow icon
11.14.2022
5 min czytania
IT
IT
Jak stworzyć aplikację mobilną?
arrow icon
11.11.2022
5 min czytania