2.02 (10) Czy to już koniec Typescript'u?
Piwnica IT
Piwnica IT
2.02 (10) Czy to już koniec Typescript'u?
Cześć, witamy w kolejnym odcinku podcastu Piwnica IT.
Hello, welcome to another episode of the IT Cellar podcast.
Wczesny front-end development wydaje się niemożliwy.
Early front-end development seems impossible.
Tematem dzisiejszego odcinka będzie TypeScript, nadzbiór dla JavaScriptu, który dodaje statyczne typowanie do naszego kodu.
The topic of today's episode will be TypeScript, a superset of JavaScript that adds static typing to our code.
Przez wiele lat nie tylko bardzo mocno się rozwinął, ale można powiedzieć, że zmienił front-end, odchodząc od dynamicznej natury JS-a.
For many years, it has not only developed very strongly, but one could say it has changed front-end, moving away from the dynamic nature of JS.
Wprowadził programowanie na front-endzie na nowy, wyższy poziom.
He elevated front-end programming to a new, higher level.
TypeScript stał się standardem, poprawił developer experience i ułatwił wiele procesów takich jak
TypeScript has become a standard, improved developer experience, and simplified many processes such as
testowanie, refaktoryzację czy tworzenie dokumentacji.
testing, refactoring, or creating documentation.
Wydawać by się mogło, że nikt do czystego JavaScriptu już nie wróci, a jednak coraz częściej spotkać się można z głosami,
It might seem that no one will return to pure JavaScript anymore, yet increasingly one can encounter voices,
że duże projekty porzucają TypeScript.
that large projects are abandoning TypeScript.
Wojtku, jak myślisz, dlaczego tak się dzieje?
Wojtek, what do you think, why is this happening?
Tak, jest to ciekawa sprawa na tłuszu, ale myślę, że jestem w stanie sobie wyobrazić, że w momencie, kiedy mamy taki ogromny projekt,
Yes, it is an interesting issue regarding the fat, but I think I can imagine that at the moment when we have such a huge project,
ten TypeScript zaczyna sprawiać coraz więcej problemów.
This TypeScript is starting to cause more and more problems.
Szczególnie, kiedy musimy zapewnić te typy użytkownikowi i ten nasz kod musi być bardzo generyczny.
Especially when we need to provide these types to the user and our code has to be very generic.
I tworzenie tych typów, które są bardzo skomplikowane, muszą robić naprawdę wiele rzeczy, może być naprawdę problematyczne i jestem w stanie sobie to wyobrazić.
And creating these types, which are very complicated, must involve doing really many things, can be really problematic, and I can imagine that.
Wiele projektów, które działają na rynku, przede wszystkim można tutaj wspomnieć o Svelte w wersji piątej czy Svelte Kitcie, porzuciło TSA na rzecz czystego JavaScriptu.
Many projects operating in the market, primarily Svelte version five and SvelteKit, have abandoned TypeScript in favor of pure JavaScript.
I wydaje się, że to porzucenie, to odejście od TypeScriptu na rzecz czystego JavaScriptu wynika przede wszystkim z tego, że są to bardziej biblioteki niż aplikacje docelowe, które są używane przez wiele różnych podmiotów.
And it seems that this abandonment, this shift from TypeScript to pure JavaScript is primarily due to the fact that these are more libraries than end applications that are used by many different entities.
I tutaj zamiennikiem dla takiego typowania w Svelte czy w Svelte Kitcie prawdopodobnie będzie JSDocs, który pozwoli Wam wygenerować typy na podstawie swoich struktur, swojego kodu.
And here, a substitute for such typing in Svelte or Svelte Kit will probably be JSDocs, which will allow you to generate types based on your structures and your code.
No i tutaj to podejście, w zasadzie wydaje mi się, że to odejście od TypeScriptu ma tutaj, w zasadzie ma tutaj swoją wartość.
Well, and here this approach, basically it seems to me that this departure from TypeScript has its value here.
Kod, który dostarczamy będzie miał mniej tych kroków do wykonania, będzie bardziej, można powiedzieć, bardziej generyczny, stanie się łatwiejszy do zaimplementowania w aplikacji.
The code we provide will have fewer steps to complete, it will be more, one could say, more generic, and will become easier to implement in the application.
Na pewno miałeś takie doświadczenia, gdzie musiałeś zaimplementować jakąś bibliotekę, jej typy.
You must have had experiences where you had to implement some library and its types.
Były na tyle rozbudowane i na tyle chaotyczne, że ciężko było znaleźć po prostu najlepszą drogę do tego, aby wprowadzić odpowiednie typy do swojej aplikacji, uwzględniając to, co zostało napisane w danej bibliotece.
They were so elaborate and so chaotic that it was difficult to simply find the best way to introduce the appropriate types into your application, taking into account what was written in that library.
Zdecydowanie. Poza tym szczerze, powiem Ci Mateuszu, że troszkę przeraża mnie to miejsce usunięcia TypeScriptu z takiej biblioteki, ale ogólnie usunięcie, jak myślę sobie o swoich projektach.
Definitely. Besides that, to be honest, I will tell you, Mateusz, that the removal of TypeScript from such a library frightens me a bit, but generally, the removal, when I think about my projects.
I w momencie, kiedy miałbym się pozbyć tego TypeScripta, troszkę przeraża mnie to myśl, jednak jest on takim miłym, zapewnia taką miłą, bezpieczną przestrzeń i bardzo pomaga, wydaje mi się, w pisaniu tego kodu.
And at the moment when I would have to get rid of this TypeScript, the thought scares me a bit, however, it is such a nice tool, providing such a pleasant, safe space and I think it really helps in writing this code.
Szczególnie w momencie, kiedy nie jestem to tylko ja, osobą, która tworzy ten kod, ale jest to wiele osób, która tworzy ten kod.
Especially at the moment when I am not the only one, the person who creates this code, but there are many people who create this code.
Więc jest to zdecydowanie ciekawy ruch.
So it is definitely an interesting move.
Ze strony tych bibliotek.
From the side of these libraries.
Poza tym jestem ciekawy Twojego zdania w kontekście właśnie tych JS-Docs.
Besides that, I'm curious about your opinion regarding these JS-Docs.
Myślisz, że one będą w stanie zapewnić taką samą pewność tym bibliotekom, jak zapewnią TypeScript?
Do you think they will be able to provide the same level of certainty to those libraries as TypeScript will?
Z tego co wiem, JS-Docs można, tak jak powiedziałem, łatwo przerobić na typowanie na pliki .d, .ts,
As far as I know, JS-Docs can, as I said, easily be converted to typing for .d, .ts files.
gdzie pozwalają nam wspierać już TypeScript jako taki, więc te typy, które byśmy sobie napisali w TypeScriptie, będzie można łatwo wygenerować z JS-Docsa.
where we are allowed to support TypeScript as such, so the types that we would write in TypeScript can be easily generated from JS-Doc.
JS-Docs ma tą dużą zaletę, że to jest nadal Javascript, więc nie ma tutaj żadnego dodatkowego narzutu w postaci TypeScriptu, na przykład, czy jakiegokolwiek innego języka.
JS-Docs has the great advantage that it is still Javascript, so there is no additional overhead in the form of TypeScript, for example, or any other language.
Więc można tu powiedzieć śmiało, że pod tym względem są na pewno wartościowe.
So it can be said confidently that in this respect they are definitely valuable.
Dużo naszych id już wspiera JS-Docs na tyle, że jest w stanie wnioskować, jaki powinien być typ przy danej zmiennej, czy w danym kodzie.
Many of our IDs already support JS-Docs to the extent that they can infer what the type of a given variable should be in certain code.
Myślę, że takie narzędzia jak Copilot, czy inne rozwiązania AI-owe już też mają to wsparcie i też są w stanie nam dosyć fajnie to ograć i korzystać z tych JS-Docsów, które nam to opisują.
I think that tools like Copilot or other AI solutions already have this support and are also able to handle it quite well and utilize the JS-Docs that describe it for us.
Mi osobiście kod napisany w JS-Docsach kojarzy się ze...
Personally, the code written in JS Docs reminds me of...
Może to głupie porównanie, ale kojarzy mi się ze starym sposobem dokumentowania klas, czy funkcji, czy metod w klasach w PHP.
It may be a silly comparison, but it reminds me of the old way of documenting classes, functions, or methods in classes in PHP.
To samo. Może nie w PHP, ale w JS-ie jak najbardziej.
The same. Maybe not in PHP, but definitely in JS.
Moja przygoda z programowaniem rozpoczęła się od PHP, więc gdzieś tam rzeczywiście pierwszy backendowy kod, który widziałem, był właśnie tak opisany, udokumentowany.
My journey with programming started with PHP, so somewhere along the way, the first backend code I saw was indeed described and documented like that.
I te JS-Docs dokładnie mi to przypominają.
And the JS-Docs remind me of that exactly.
Jestem w ogóle ciekawy.
I am curious at all.
Bo dla mnie właśnie tak jak wspominasz, czy tak jak też wskazuje nazwa, to są JS-Docsy, czyli coś do dokumentacji.
Because for me, just as you mention, or as the name also suggests, these are JS-Docsy, which means something for documentation.
I nie wiem jakie ty masz doświadczenie na dłuższym ogólnym z dokumentacją, ale dla mnie jest to zawsze coś, szczególnie jeśli chodzi o coś, co jest gdzieś przy kodzie.
And I don't know what experience you have with documentation in the long run, but for me, it is always something, especially when it comes to something that is somewhere near the code.
Co jest kolejną rzeczą, którą trzeba utrzymywać.
What is the next thing that needs to be maintained?
I jakoś ta zależność pomiędzy tą dokumentacją właśnie obok tego kodu opisujący te nasze funkcje, klasy, metody, cokolwiek.
And somehow this dependency between the documentation right next to this code describing our functions, classes, methods, whatever.
Jest znacznie mniej związana niż jest TypeScript.
It is much less tied than TypeScript is.
Czyli co chcę powiedzieć, że te typy, które musimy utrzymywać w JS-Docsach, jest to dla mnie zdecydowanie mniej naturalne niż utrzymywanie ich w TypeScript.
So what I want to say is that the types we need to maintain in JS Docs are definitely less natural for me than maintaining them in TypeScript.
Zgodzić się muszę, ponieważ sam pamiętam czasy, kiedy się modyfikowały jakąś funkcję i akurat tego fragmentu jakoś o dziwo zapominało się aktualizować.
I have to agree, because I remember the times when some function was modified and somehow that part was surprisingly forgotten to be updated.
Dokładnie.
Exactly.
W TypeScriptie rzeczywiście mamy, możemy traktować kod TypeScriptowy jako swoistą dokumentację.
In TypeScript, we can indeed treat TypeScript code as a kind of documentation.
Jakby to jest naturalne.
As if it is natural.
Tak, piszesz kod i automatycznie tworzy się dokumentacja do tego kodu.
Yes, you write code and documentation for that code is automatically generated.
Więc pod tym względem TypeScript na pewno ma dużo większą wartość niż wszelkie narzędzia do tworzenia dokumentacji.
So in this regard, TypeScript definitely has much greater value than any documentation tools.
Zresztą jakbyśmy tworzyli dokumentację w Markdownie do tego, co tworzymy, to prawdopodobnie nikt by tego nie pisał.
Besides, if we were to create documentation in Markdown for what we are developing, probably no one would write it.
Dokładnie.
Exactly.
Poza tym w ogóle ciekawe, jak się teraz nad tym zastanawiam, ciekawa jest właśnie ta zależność, prawda?
Besides that, it's quite interesting, as I'm thinking about it now, it's precisely this dependency that is intriguing, right?
Pomiędzy tym, że jednak TypeScript traktujemy jako kod, jako coś, co jest nierozłączną częścią tego, co piszemy,
Between the fact that we treat TypeScript as code, as something that is an inseparable part of what we write,
a jednak te JS-Docs wydają mi się być trochę z boku, są jako taka rzecz dodatkowa.
However, those JS-Docs seem a bit off to me; they seem like an additional thing.
Więc jestem ciekawy, jak to będzie wyglądać utrzymanie takiej biblioteki w momencie, kiedy musisz uważać jeszcze na tą rzecz,
So I'm curious what maintaining such a library will look like at the moment when you also have to watch out for this thing.
która przynajmniej dla mnie, nie wiem, jak dla ciebie i dla pozostałych programistów, jest taka trochę, wydaje się, spokój,
which at least for me, I don't know about you and the other programmers, seems a bit like, there is a calmness,
jako taką rzecz, jako taka rzecz dodatkowa bardziej.
as such a thing, as such an additional thing more.
Tylko tutaj też chyba należałoby zwrócić uwagę na fakt, że JavaScript jako język jest językiem dynamicznie typowanym,
Only here should we also point out the fact that JavaScript, as a language, is dynamically typed.
a zatem daje bardzo dużo swobody programiście, pozwala na wiele rzeczy, na które języki statycznie, silnie typowane,
and thus gives a lot of freedom to the programmer, allowing for many things that statically, strongly typed languages do not.
nie pozwolą.
they won't allow.
I teraz z perspektywy klasycznego front-end dewelopera, który wyszedł z JavaScriptu i to był jego pierwszy język,
And now from the perspective of a classic front-end developer who started with JavaScript and that was his first language,
to jest bardzo komfortowa sytuacja.
This is a very comfortable situation.
Możemy wprowadzać, co chcemy, pisać jak chcemy i w zasadzie JavaScript nam na to pozwoli.
We can introduce whatever we want, write however we want, and basically JavaScript allows us to do that.
Skoryguje nasze błędy, a jeżeli jakieś już popełnimy takie krytyczne, no to wyrzuci nam jakiś reference error i na tym się w zasadzie skończy.
It will correct our mistakes, and if we make any critical ones, it will throw a reference error and that will basically be the end of it.
Trudniej będzie to zrobić.
It will be harder to do.
Możemy to zdebugować oczywiście.
We can debug this, of course.
Natomiast z perspektywy wprowadzenia języka silnie typowanego musimy mieć, że tak powiem, większy,
On the other hand, from the perspective of introducing a strongly typed language, we need to have, so to speak, a greater...
musimy zwrócić większą uwagę na to, co piszemy.
We need to pay more attention to what we write.
Musimy bardziej się skupić na tym, co my chcemy napisać, ponieważ raz zadeklarowany typ już taki z nami zostanie.
We need to focus more on what we want to write because once a declared type is set, it will stay with us.
Poprzez chociażby mechanizmy w TypeScriptzie, jak inferencja typów,
Through mechanisms in TypeScript, such as type inference,
nie jesteśmy w stanie nadpisać.
we are unable to overwrite.
Nie możemy nadpisać typu, który raz został zadeklarowany i tutaj wydaje mi się, że JSDocs będą idealnym rozwiązaniem dla osoby,
We cannot overwrite a type that has been declared once, and here I think JSDocs will be the ideal solution for someone who,
która właśnie wychodzi z tego naturalnego świata front-endu, tego pierwotnego świata front-endu, jakim był JavaScript w wersji takiej dynamicznej.
which is just emerging from that natural world of front-end, that primal world of front-end, which was JavaScript in its dynamic version.
W zasadzie nadal jest w wersji dynamicznej, gdzie możemy sobie dodać coś, co nam podpowie, jakie były zamierzenia autora tego kodu.
Basically, it is still in a dynamic version, where we can add something that suggests what the author's intentions for this code were.
Niekoniecznie, że tak to musi zostać, ale cel był bardzo prosty i ten cel opisujemy w postaci dokumentacji.
Not necessarily that it has to remain that way, but the goal was very simple and we describe this goal in the form of documentation.
W TypeScriptzie nie ma już tej elastyczności.
In TypeScript, there is no longer this flexibility.
W TypeScriptzie mamy ten, że tak powiem, taki strict mode, gdzie nie jesteśmy w stanie wyjść poza pewne ramy.
In TypeScript, we have this, so to speak, strict mode, where we are unable to go beyond certain boundaries.
Oczywiście mamy eny, ale to już jest trochę inna kwestia.
Of course we have envy, but that's a slightly different matter.
To prawda.
It's true.
Zdecydowanie jest to ciekawy model.
It is definitely an interesting model.
Jestem ciekawy.
I am curious.
Jak utrzymywanie tego typu bibliotek rozwinie się dalej.
How the maintenance of this type of library will develop further.
Nie wiem, czy miałeś okazję w ogóle pisać właśnie tego typu kody, gdzie JSDocs'y traktujesz jako TypeScript
I don't know if you've had the chance to write this type of code at all, where you treat JSDocs as TypeScript.
i ten Twój kod wynikowy będzie TypeScriptem, czy też będą oprócz niego zapomniane jeszcze typy,
and will your output code be TypeScript, or will there also be forgotten types besides it?
czyli piszemy JS i mamy te typy obok.
So we write JS and have those types beside.
Domyślam się, że będzie to nie nadawe zwanie,
I suspect that this will not be appropriate to call.
żeby to wszystko działało tak, jak trzeba.
for everything to work as it should.
Chociaż, tak jak mówię, nie miałem jeszcze okazji z takim podejściem pracować.
Although, as I said, I haven't had the opportunity to work with such an approach yet.
Też widziałem kod bibliotek, które korzystają z TypeScriptu
I also saw the code of libraries that use TypeScript.
i wiem, jak ciężkie potrafią być te generyczne typy, które są potrzebne do tego, żeby ta biblioteka działała dobrze.
And I know how difficult these generic types can be that are necessary for this library to work well.
Można sobie rzucić okiem na taką bibliotekę typu ZOT,
You can take a look at a library of the ZOT type.
i typy, które działają tam pod maską, są naprawdę skomplikowane.
The types that operate there under the hood are really complicated.
I ten język i to, co jest napisane dookoła samego kodu,
And this language and what is written around the code itself,
co czasami jest dysproporcjonalnie większe,
what is sometimes disproportionately larger,
same te typy i to, żeby one działały dobrze,
the same types and to have them work well,
jest aż zaskakująco dysproporcjonalnie większe
is surprisingly disproportionately larger
w porównaniu do samej logiki biznesowej.
compared to the business logic itself.
Problem nie dotyczy tylko ZOT-a w zasadzie typów,
The problem does not only concern the ZOT in terms of types.
większa biblioteka, która jest udostępniana na zewnątrz,
a larger library that is made available to the outside,
ma dokładnie ten sam problem.
he has exactly the same problem.
Niejednokrotnie jak spojrzysz w kod dokumentacji,
Many times when you look at the documentation code,
czyli kod typów, który w zasadzie widzisz pierwszy,
so the type code, which you basically see first,
kiedy sobie wejdziesz do Node Modules,
when you go into Node Modules,
na pierwszy rzut oka wydaje się to mega chaotyczne,
At first glance, it seems very chaotic.
niezrozumiałe, skomplikowane, zwał jak zwał,
incomprehensible, complicated, call it what you will,
i trzeba się naprawdę skupić, żeby
and you really have to focus to
zrozumieć, co autor miał na myśli.
to understand what the author meant.
Więc wydaje mi się, że w tym momencie to, co zrobiło Svelte w wersji piątej
So it seems to me that at this point what Svelte has done in version five
czy SvelteKit, odchodząc od TypeScripta, ale jednocześnie nie zamykając
Does SvelteKit, while moving away from TypeScript, also not close off?
tej furtki, to jest całkiem fajny ruch.
That gate is quite a nice move.
I pomimo wszystko należy to uszanować. Oni nie powiedzieli, że
And despite everything, it should be respected. They did not say that...
nie doceniają silnego typowania.
they do not appreciate strong betting.
Oni wręcz doceniają w swoich aplikacjach.
They even appreciate it in their applications.
Natomiast w przypadku samej biblioteki
However, in the case of the library itself
potwierdzają, że większą
confirm that greater
użyteczność dla użytkownika będzie miało
it will have usability for the user
stworzenie do tego JS docsów
creation of JS docs for this
i napisanie tego w JS-ie
and writing this in JS
czystym, niż męczenie się,
cleaner than struggling,
to tak trzeba nazwać, kombinowanie z TypeScriptem na poziomie biblioteki.
It needs to be called that, experimenting with TypeScript at the library level.
W samej aplikacji, którą my już finalnie tworzymy
In the very application that we are ultimately creating.
z wykorzystaniem tych bibliotek, prawdopodobnie typy będą najlepszym rozwiązaniem.
Using these libraries, types will probably be the best solution.
Więc TypeScript, czy jakikolwiek inny język
So TypeScript or any other language.
silnie typowany, w tym wypadku zdecydowanie nam pomoże.
strongly indicated, in this case it will definitely help us.
Jestem ciekawy Twojego zdania,
I am curious about your opinion.
czy Mateuszu, w tym kontekście, że wiem, że Svelte jest takim
Mateusz, in this context, I know that Svelte is such a...
dość specyficznym frameworkiem frontendowym,
a fairly specific frontend framework,
z powiedzmy takim trochę huliganem, można go nawet nazwać,
with let's say a bit of a hooligan, you could even call him that,
który stwierdził, że ma trochę inne podejście do tego,
who stated that he has a slightly different approach to this,
jak podchodzimy do kodu.
how we approach the code.
Przypomina oczywiście to, co znamy z naszych środowisk frontendowych,
This of course resembles what we know from our frontend environments,
ale jednak te pliki w większości wypadków kończą się .svelte
but still these files mostly end with .svelte
i to nie jest to samo, co Angular, React, nawet Vue.
And it's not the same as Angular, React, or even Vue.
I czy uważasz, że taki ruch właśnie odejścia od TypeScriptu
And do you think that such a move of stepping away from TypeScript is justified?
jest możliwy, czy też widzisz go,
is it possible, or do you see it,
czy też taka decyzja będzie podejmowana
Will such a decision also be made?
przez biblioteki, które bardziej kojarzysz sobie z JavaScriptem
through libraries that you associate more with JavaScript
i TypeScriptem? Mówię tutaj o takich bibliotekach typu
and TypeScript? I'm talking here about libraries like
Next, Remix, React Query,
Next, Remix, React Query,
coś podobnego typu Zot, o którym wspominaliśmy.
something similar to Zot that we mentioned.
Wydaje mi się, że w kontekście tego,
I think that in the context of this,
jak rozwija się JavaScript,
how JavaScript is evolving,
warto docenić go jako język i to, co zaproponował
It's worth appreciating it as a language and what it has offered.
tutaj chociażby zespół Svelte, czyli to odejście od
here, for example, the Svelte team, which is a departure from
TypeScriptu na rzecz
TypeScript in favor of
czystego JS-a i JS-docsów, to jest ciekawy
pure JS and JS-docs, it is interesting
kierunek rozwoju. Nie powiedziałbym, że wszyscy w tym kierunku pójdą, bo to na pewno
direction of development. I wouldn't say that everyone will go in that direction, because that's for sure.
tak to nie będzie wyglądało. Widać to chociażby po
this will not be how it looks. You can see this, for example, from
tym, że TypeScript nadal jest
that TypeScript is still
tym głównym językiem, w którym tworzone są
the main language in which they are created
biblioteki różnego rodzaju i aplikacje.
various types of libraries and applications.
I tak zostanie prawdopodobnie, chyba że jedna propozycja
And it will probably stay that way, unless one proposal.
dotycząca wprowadzenia typów do JS-a zostanie
regarding the introduction of types to JS will be
ostatecznie opublikowana i wejdzie z którymś kolejnym standardem ECMA.
Ultimately, it will be published and will be included with one of the next ECMA standards.
No ale do tego czasu myślę, że
Well, until then I think that
TypeScript nadal będzie bardzo popularny i
TypeScript will still be very popular and
to, co się wydarzyło w 2015,
what happened in 2015,
2014 roku, kiedy, w 2015 w zasadzie, kiedy Angular
In 2014, when, in 2015 basically, when Angular
wprowadzał TypeScript na rynek,
introduced TypeScript to the market,
inaczej, wypromowywał TypeScript na rynku
Otherwise, he promoted TypeScript in the market.
na rynku front-endowym, no to od tamtego
In the front-end market, well, since then
czasu sukcesywnie TypeScript zyskuje. Microsoft jako
TypeScript is gradually gaining success. Microsoft as
ogromna organizacja nie miał takiej siły przebicia, żeby go tak wypromować.
The huge organization did not have the power to promote him like that.
Ale zwróć uwagę, że Google ze swoim Angularem wchodząc
But note that Google with its Angular is entering.
w TypeScript wymusił na użytkownikach wprowadzenie.
in TypeScript forced users to provide input.
W zasadzie stał się takim przodownikiem.
Basically, he has become a pioneer.
Pokazywał, jakie są cechy, zalety TypeScriptu i dzisiaj
He showed what the features and advantages of TypeScript are today.
pomimo wielu jego wad, o których sobie wspomnieliśmy,
despite many of his faults that we mentioned,
czyli tej chaotycznej dokumentacji, łatwości
that chaotic documentation, ease
w budowaniu bałaganu, ale też wielu zalet.
in creating chaos, but also many advantages.
Jednak te zalety są bardziej wartościowe i bardziej widoczne
However, these advantages are more valuable and more noticeable.
niż te wady, z którymi możemy się spotkać.
than the defects we may encounter.
I takie, wydaje mi się, że takie frameworki jak Next
And it seems to me that frameworks like Next
czy właśnie biblioteki jak Zot czy jakakolwiek inna
Are libraries like Zot or any other just like that?
będą dalej szły w kierunku rozwijania swojego
they will continue to move towards developing their
kodu z TypeScriptem, bo pomimo wszystko
code with TypeScript, because despite everything
nawet dla deweloperów będzie to łatwiejsze.
Even for developers, it will be easier.
Będzie to przyjemniejsze. Sam wiesz, jak się pisze
It will be more pleasant. You know how it is written.
z czystym JS-em, a jak się pisze z TypeScriptem.
with pure JS, and how it’s written with TypeScript.
Obaj zaczynaliśmy od czystego JS-a. Pierwsze projekty,
We both started with pure JS. The first projects,
które robiliśmy były związane z czystym JS-em.
the ones we did were related to pure JS.
Dopiero po czasie, zresztą obaj mamy takie doświadczenie,
Only after some time, besides we both have such experience,
że weszliśmy w Angulara jako pierwszy projekt z TypeScriptem
that we entered Angular as our first project with TypeScript
i to było coś nowego. To było coś, można powiedzieć, świeżego,
And it was something new. It was something, one could say, fresh.
które trochę irytowało, ale jednak pomimo wszystko po jakimś czasie
which was a bit irritating, but still after some time
zaczęliśmy doceniać zalety. I nawet przychodząc później
We started to appreciate the advantages. And even coming later.
na Reacta, gdzie pierwszym moim językiem w Reactie był JavaScript
on React, where my first language in React was JavaScript
i dopiero po chwili dodało się do tego TypeScript,
and only after a moment, TypeScript was added to that,
okazywało się, wow, ten TypeScript jednak zmienia.
It turned out, wow, this TypeScript is indeed changing things.
Jednak wprowadza pewne ułatwienia w pisaniu.
However, it introduces certain conveniences in writing.
I pomimo tego, że wydaje się dla klasycznego front-end developera
And despite the fact that it seems for a classic front-end developer
czymś nienaturalnym może,
it might be something unnatural,
to jednak po pewnym czasie każdy albo większość
However, after some time, everyone or the majority...
z nas docenia go.
Out of us, he is appreciated.
To prawda. Myślę, że już na ten moment jest to taki standard,
It's true. I think that at this point it's already a standard.
od którego ciężko się oderwać. Już szczerze powiedziawszy
from which it's hard to break away. To be honest, already
ciężko sobie było wyrazić pisanie aplikacji jakiejkolwiek
It was difficult to express writing any application.
bez TypeScriptu. Ale pamiętam taki czas, kiedy
without TypeScript. But I remember a time when
ten TypeScript przerażał mnie. Może nie przerażał,
this TypeScript scared me. Maybe it didn't scare me,
ale zdecydowanie myślałem, że jest
but I definitely thought it was
problematyczny i bardzo spowalnia
problematic and very slow down
proces tworzenia. Nie wiem, czy ty też miałeś takie
the process of creation. I don't know if you had the same.
doświadczenie, ale ja na samym początku byłem wręcz przerażony.
Experience, but at the very beginning I was quite terrified.
Tak jak wspominałeś, ile dodatkowego kodu trzeba utworzyć.
As you mentioned, how much additional code needs to be created?
Ale potem, gdy zrozumie się te plusy, które daje ten TypeScript
But then, when you understand the advantages that TypeScript offers.
i nauczy się go trochę pisać,
and will learn to write it a little bit.
rozumieć i przejdzie się przez tą pierwszą barierę, która
to understand and will get through that first barrier, which
wcale nie jest taka wysoka, to naprawdę
she's not that tall, really
wszystko zmienia się tylko na pozytywne.
Everything is changing only for the better.
Z mojej perspektywy podam Ci przykład szkoleń,
From my perspective, I will give you an example of training,
które prowadziłem dla Java Developerów.
which I conducted for Java Developers.
Zazwyczaj takie szkolenia odbywają się w ten sposób. To są najczęściej osoby,
Usually, such training sessions take place in this way. These are most often individuals,
które mają jakieś podstawy frontendu w postaci HTML, CSS,
which have some frontend foundations in the form of HTML, CSS,
JavaScript. Zaczynamy od wprowadzenia na przykład Reacta
JavaScript. We start with an introduction to, for example, React.
albo jakiegokolwiek innego frameworka, fragmentu
or any other framework, part
wiedzy frontendowej z wykorzystaniem czystego JS.
frontend knowledge using vanilla JS.
I najczęściej po jednym, po dwóch dniach wprowadzamy do tego
And most often, after one or two days, we introduce it into this.
TypeScript. Najczęściej wynika to z prośby
TypeScript. It often results from a request.
użytkowników czy też studentów, którzy chcą się czegoś nauczyć.
users or students who want to learn something.
Więc pokazuję ten sam kod w JS
So I'm showing the same code in JS.
i pokazuję ten sam kod w TypeScript. Dla osób, tak jak wspomniałem,
and I am showing the same code in TypeScript. For people, as I mentioned,
które mają przede wszystkim background
which have primarily a background
javowy czy też backendowy z silnie typowanymi językami
Java-based or backend with strongly typed languages
jest to tak naturalne
it is so natural
pisanie typów, że
writing types, that
w zasadzie dochodzą do wniosku, że oni nie chcą się uczyć tego klasycznego
They basically come to the conclusion that they do not want to learn the classical.
JS-a, bo ten TypeScript da im o wiele więcej
JS, because this TypeScript will give them a lot more.
wartości, o wiele jest dla nich bardziej naturalny
values, it is much more natural for them
w tworzeniu, w pisaniu niż czysty JS.
in creation, in writing than pure JS.
I to chyba też jest kierunek, w którym
And this is probably also a direction in which
poszedł frontend, jakby nie patrzeć. Zwróć uwagę,
The frontend has gone, no matter how you look at it. Pay attention,
że my w Javascriptie,
that we in JavaScript,
tworząc kod w Javascriptie, od wielu lat byliśmy trochę
While creating code in JavaScript, for many years we have been a bit
inaczej traktowani. Często się mówiło, że a tam frontend
treated differently. It was often said, "Oh, that's just frontend."
to nie programiści, a ten Javascript to tam do robienia
It's not the programmers, but that JavaScript is just for doing there.
animacji, a tam, żeby tam się kręcił jakiś loaderek
animation, and there, so that some loader is spinning there
to ten Javascript spokojnie wystarczy. Te role dzisiaj
That ten Javascript is more than enough. These roles today.
przejął CSS, tak jak być powinno.
He took over the CSS, as it should be.
Wprowadzając wiele różnych funkcjonalności,
Introducing many different functionalities,
funkcji, sposobu obliczeń, takich animacji,
function, method of calculations, such animations,
możemy tworzyć te keyframesy
we can create these keyframes
i wiele innych elementów, na które CSS
and many other elements that CSS
nam pozwala. A Javascript stał się językiem, który
allows us. And JavaScript has become the language that
służy nam do opisania logiki biznesowej.
It serves us to describe the business logic.
W większości przypadków. Tak jak to się
In most cases. Just as it is.
dzieje na językach backendowych. No i teraz z perspektywy
stories in backend languages. And now from a perspective
takiego
such
wprowadzenia TypeScriptu, czy też zmian w Javascriptie
the introduction of TypeScript, as well as changes in JavaScript
na przestrzeni lat, Javascript zmierza w kierunku właśnie
Over the years, JavaScript is heading towards exactly that.
rozwijania się jako, i też udowadniania całemu światu, że
developing as well as proving to the whole world that
no sorry, ale my jesteśmy, Javascript jest pełnoprawnym językiem
No, sorry, but we are, Javascript is a full-fledged language.
programowania. I w nim też można tworzyć rozsądnie.
programming. And it is also possible to create sensibly in it.
Nie tylko chaotycznie, nie tylko dynamicznie
Not only chaotically, not only dynamically.
w cudzysłowiu, ale tworzyć narzędzia, które dają Ci
"in quotation marks, but to create tools that give you"
poczucie tego, że stworzyłeś coś stabilnego.
the feeling that you have created something stable.
TypeScript przede wszystkim, poprzez to właśnie,
TypeScript primarily, through this very thing,
że dodaje to silne typowanie, ale też daje wiele różnych
that it adds strong typing, but also provides many different
funkcjonalności, takie właśnie jak np. typy generyczne,
functionalities, such as generics,
no to pozwala nam właśnie, czy guardy właśnie,
Well, it allows us just, or rather, the guards just,
pozwala nam właśnie na
allows us to
bardziej stabilne i wyważone tworzenie tych aplikacji. Można
more stable and balanced creation of these applications. One can
powiedzieć, że jest bardziej dedykowany dla dojrzałych
to say that it is more dedicated to adults
projektów, które mają być stabilne w długim okresie
projects that are to be stable in the long term
czasu. No tak, albo nad którym
time. Well, either on which
pracuje wiele osób. Albo nad którymi pracuje wiele osób. Chociażby problem
Many people are working. Or on which many people are working. For example, the problem.
refaktoryzacji. To prawda. Wyobrażasz sobie taką sytuację,
refactoring. That's true. Can you imagine such a situation,
że coś zmieniasz, instalujesz nową bibliotekę, albo
that you are changing something, installing a new library, or
zmieniasz jakiś typ
Are you changing some kind of type?
projekt. Projekt jest napisany wczesnym JSie, po prostu jest cisza i musisz
project. The project is written in early JS, there is just silence and you have to
teraz się przeklikiwać przez pół aplikacji, żeby znaleźć to miejsce,
now you have to click through half the app to find that place,
że o, okej, to tam w tym konkretnym popatku to nie działa.
That, oh, okay, it doesn't work in that specific case.
A wyobraź sobie teraz, że to jest aplikacja reaktywna.
And now imagine that this is a reactive application.
No tak, no. Która
Well, which one?
w zasadzie wiele rzeczy ma ukrytych i nie masz jasno
Basically, many things are hidden and you don't have clarity.
napisane, co się dzieje. Po prostu dzieje się magia.
written, what's happening. It's just magic happening.
I jest logika rozproszona po całej aplikacji.
And there is logic distributed throughout the entire application.
Tak jak to się dzieje w aplikacjach frontendowych, komponentowych. Bez typescriptu
Just like it happens in frontend, component-based applications. Without TypeScript.
cholernie trudno jest tym zarządzać.
It's damn hard to manage this.
To prawda. I to w sumie, jak tak teraz o tym rozmawiamy,
It's true. And actually, now that we're talking about it,
to jakby implementacja tego typescripta
it's like an implementation of this typescript
w Angularze, w ujce rozmawialiśmy, wydaje się być
In Angular, in the context we discussed, it seems to be.
naturalnym ruchem, prawda? Po prostu nie wyobrażam sobie,
a natural movement, right? I just can't imagine,
co się dzieje, szczególnie gdy chcemy, żeby nasz framework był traktowany poważnie
What is happening, especially when we want our framework to be taken seriously?
i chcemy, żeby na jego podstawie były utworzone jakieś
and we want some to be created based on it
ogromne aplikacje, to w momencie,
huge applications, at the moment,
kiedy wyobrażamy sobie tą rzeczywistość bez typescriptu,
when we imagine this reality without TypeScript,
zdecydowanie wygląda ona
she definitely looks
średnio. Też wydaje mi się, że
average. I also think that
Angular czy też Google doskonale wiedział, co robi, wprowadzając typescript
Angular or Google knew exactly what they were doing by introducing TypeScript.
do swojego frameworka.
to your framework.
Wydaje mi się, że wprowadzenie typescriptu dało im tą gwarancję,
I think that the introduction of TypeScript gave them that assurance,
że ludzie będą to tworzyli w taki sposób, w jaki oni chcieliby,
that people will create it in the way they would like.
żeby to było tworzone. Sama architektura tego rozwiązania
so that it could be created. The architecture of this solution itself
już sporo narzuciła, ale typescript też tak naprawdę
She has already imposed quite a bit, but TypeScript has really done the same.
to zabetonował.
He/She/It concreted that.
Spowodował, że trudno, bardzo trudno
It made it difficult, very difficult.
jest odejść od tego zaproponowanego sposobu pisania
It is to move away from this proposed way of writing.
przez developerów Google'a.
by Google's developers.
Mhm, dokładnie.
Mhm, exactly.
Okej, ale tutaj też warto wspomnieć o tym, co się zmienia,
Okay, but it's also worth mentioning what is changing here.
bo typescript jest dla nas w tym momencie standardem,
because TypeScript is currently the standard for us,
ale Microsoft, który
but Microsoft, which
tutaj też powiedzmy to jest twórcą tego
Here, let's say this is the creator of this.
standardu dla JavaScriptu, w 2023 roku, w marcu
standard for JavaScript, in 2023, in March
wysunął ECMAScript Proposal,
he put forward an ECMAScript Proposal,
gdzie zaproponował wprowadzenie silnego typowania
where he proposed introducing strong typing
do JavaScriptu, który składniowo
to JavaScript, which syntactically
dość mocno przypomina to, co się dzieje w typeskrypcie,
it quite strongly resembles what happens in TypeScript,
więc mamy podobną składnię do deklarowania typów,
so we have a similar syntax for declaring types,
mamy podobne nowe typy,
we have similar new types,
tak np. mamy wprowadzenie tupli,
for example, we have the introduction of tuples,
pewnych rzeczy nie wprowadzał,
he did not introduce certain things,
nie wprowadzał ten standard,
he did not introduce this standard,
ale można śmiało powiedzieć, że on
but one can confidently say that he
faworyzuje typescript.
favors TypeScript.
Natomiast prawie wszystkie propozycje
However, almost all proposals
przyniosłyby też korzyści dla użytkowników
they would also bring benefits for users
innych języków silnie typowanych,
in other strongly typed languages,
nadzbiorów silnie typowanych, takich jak np. flow,
strongly typed supersets, such as flow,
który też jest obecny na rynku,
which is also present in the market,
o nim pewnie sobie za chwilkę porozmawiamy.
We'll probably talk about him in a moment.
Myślisz, że to jest dobry kierunek,
Do you think this is a good direction?
żeby JavaScript jako JavaScript stał się językiem,
so that JavaScript as JavaScript becomes a language,
może się nie stanie statycznie typowanym,
it may not become statically typed,
ale żeby wprowadził możliwość deklaracji typów
but to introduce the ability to declare types
już w swoim kodzie źródłowym?
already in your source code?
Myślę, że jest to naturalny kierunek,
I think it's a natural direction,
który widać też w innych językach programowania.
which is also visible in other programming languages.
Pierwszy przykład, o którym wiem,
The first example I know of,
przychodzi mi do głowy,
it comes to my mind,
niestety nie jestem aż tak dobrze
unfortunately I am not that well
zaznajomiony z historią,
familiar with history,
w którym jest Python,
in which there is Python,
w którym dokładnie zadziała się
in which it exactly happened
prawie identyczna sytuacja,
almost identical situation,
gdzie pojawiła się opcja typów,
where the option of types appeared,
które oczywiście nie wyglądają tak samo,
which of course do not look the same,
czy też nie będą działać w taki sam sposób,
or will they not work in the same way,
tak jak w tym proposalu,
just like in this proposal,
ale droga jest mniej więcej taka sama.
but the road is more or less the same.
Czyli mamy język dynamicznie typowany,
So we have a dynamically typed language,
w którym użytkownicy,
in which users,
coraz więcej użytkowników
more and more users
zaczyna z niego korzystać,
starts using it,
coraz więcej ludzi pracuje
more and more people are working
nad aplikacjami
above the applications
i nagle pojawia się
and suddenly it appears
to wprowadzenie tych typów,
to the introduction of these types,
które pomagają wszystkim,
that help everyone,
nie dość, że użytkownikom i konsumentom
not only that, but also to users and consumers
kodu tego Pythonowego,
this Python code,
czy ludziom, które pracują nad
to the people who work on
aplikacjami,
applications
to jeszcze dodatkowo ide,
I'm going additionally.
które muszą to wszystko gdzieś tam
which must all be somewhere out there
kompilować i wspierać
compile and support
i jest to zdecydowanie cięższe
and it is definitely heavier
w momencie, kiedy tych typów nie ma.
at the moment when those guys are not around.
Więc jak dla mnie jest to
So for me it is
naturalny kierunek JavaScriptu
natural direction of JavaScript
i myślę, że fajnie,
and I think it's nice,
że będzie to wspierane natywnie,
that it will be supported natively,
bo pozwoli to na dużo
because it will allow for a lot
dodatkowych opcji.
additional options.
Co o tym sądzisz Mateuszu?
What do you think about it, Mateusz?
Myślę, że sporo wyzwań
I think there are quite a few challenges.
przed tym
before this
przed tym proposalem.
before this proposal.
On jest w tej chwili chyba w stage one
He is probably in stage one at the moment.
z tego co kojarzę.
As far as I remember.
Natomiast dlaczego sporo wyzwań?
However, why are there quite a few challenges?
Przede wszystkim dlatego, że
First of all, because
ECMA jako organizacja
ECMA as an organization
bardzo chciałaby i dąży
she would very much like to and strives
do tego, żeby każdy nowy
to the point that every new
proposal, każda nowa
proposal, every new
funkcjonalność, która wchodzi do
functionality that comes into
JavaScriptu, miała pełną kompatybilność
JavaScript had full compatibility.
wsteczną. Żeby kod,
retro. So that the code,
który jest
which is
że tak powiem zastany
so to speak, stagnant
działał w dokładnie ten sam sposób.
it worked in exactly the same way.
Żeby zachować te stare
To preserve these old ones.
funkcjonalności i stary sposób pisania.
functionality and the old way of writing.
JavaScript przez wiele
JavaScript for many
lat
years
wprowadził bardzo dużo
introduced a lot
różnych rzeczy. I teraz dodanie
different things. And now adding
do tego typowania
to this betting
już jest utrudnione.
It is already complicated.
Mniej niemożliwe.
Less impossible.
Ale na pewno będzie to spore wyzwanie
But it will definitely be a big challenge.
i ten proposal na pewno kilka lat
And this proposal will definitely last a few years.
najbliższych jeszcze będzie się rozwijał
will continue to develop in the near future
i będzie zbierał
and will be collecting
z rynku
from the market
różnego rodzaju komentarze
various types of comments
zanim zostanie
before it gets
tak naprawdę wdrożony.
actually implemented.
Ale mam odczucie podobne do Twojego,
But I have a feeling similar to yours,
że to jest dobry kierunek.
that this is a good direction.
Dobry kierunek, ponieważ
Good direction because
zagwarantuje
I will guarantee.
użytkownikom
users
kodu, czy też
code, or
programistom
to programmers
to
to
co daje TypeScript
what does TypeScript offer
jednocześnie nie zabierając
while not taking away
im tej elastyczności JavaScriptu.
in this flexibility of JavaScript.
Bardziej mnie to zastanawia
It makes me more curious.
dlaczego Microsoft
why Microsoft
to zaproponował.
he proposed.
Ten koncept
This concept
mnie interesuje, bo to
I am interested because it's
ta propozycja wyszła od Microsoftu.
This proposal came from Microsoft.
I ta propozycja
And this proposal
jest przez
is through
Microsoft procesowana.
Microsoft processed.
Microsoft, który jak wiemy
Microsoft, which as we know
jest twórcą
is the creator
TypeScriptu.
TypeScript.
Być może
Maybe.
mają w planach
they have plans
porzucenie tego projektu, chociaż
abandoning this project, although
kto wie, może nie.
who knows, maybe not.
Nic na ten temat
Nothing on that topic.
nie znalazłem.
I didn't find it.
Myślę, że na to szansa jest mała.
I think the chances of that are small.
Szczególnie też patrzę
I particularly look as well.
na to jak prężnie rozwija się TypeScript.
how dynamically TypeScript is developing.
Teraz już jesteśmy gdzieś tam
Now we are somewhere out there.
w wersji piątej
in the fifth version
i
I
zdecydowanie porusza się to do przodu.
It definitely moves forward.
Więc
So
nie sądzę Mateuszu, żeby
I don't think, Mateusz, that...
gdzieś to było blisko.
It was somewhere close.
Ale rzeczywiście
But indeed
jest to ciekawe i niestety
it is interesting and unfortunately
nie mam dla siebie odpowiedzi dlaczego może tak być.
I don't have an answer for myself as to why it could be like this.
Nawet pomysłu.
Not even an idea.
Czy ty masz jakieś przekształcenie, podejrzenie?
Do you have any transformation, suspicion?
Ale
But
bawimy się w detektywów trochę.
We're playing detectives a little.
Nie mam, aczkolwiek
I don't have it, however.
tak jak mówię, dla mnie to jest ciekawe
As I said, it's interesting to me.
skąd się to wzięło
Where did it come from?
i dlaczego to z ich strony wyszło.
And why did it come from their side?
Microsoft zaskakuje
Microsoft surprises.
pod wieloma względami w ostatnich latach.
In many ways in recent years.
Więc zobaczymy.
So we'll see.
Może rzeczywiście
Maybe indeed.
mają jakiś fajny plan
they have some cool plan
na to jak
to how
wesprzeć społeczność
support the community
JavaScriptu i jak sprawić, żeby
JavaScript and how to make it so that
rzeczywiście ten
indeed this
język rozwijał się
the language developed
w dobrym kierunku.
in the right direction.
Szedł w dobrym kierunku, rozwijał się
He was going in the right direction, growing.
podobnie jak Python
similarly to Python
w stronę bardziej stabilnego, dojrzałego
towards a more stable, mature
rozwiązania.
solutions.
Jeszcze bardziej dojrzalszego niż jest
Even more mature than it is.
w tym momencie.
at this moment.
Mateuszu, patrzymy na
Mateusz, we are looking at
trochę w zły sposób.
a little the wrong way.
Powinniśmy zadać pytanie właśnie
We should ask the question precisely.
czy Microsoft
is Microsoft
nie jest idealną osobą do wprowadzenia
she is not the ideal person to introduce
tego propozału.
this proposal.
Skoro oni wiedzą o tym typowaniu
Since they know about this betting.
i mają najwięcej teoretyki.
And they have the most theory.
W związku z tym, że tworzyli ten typ.
Due to the fact that they created this type.
My tu doszukujemy się jakiegoś drugiego dna.
We are looking for some hidden meaning.
A może to jest po prostu
Maybe it's просто
najbardziej odpowiednia
most suitable
osoba, powiedzmy,
person, let's say,
do zrobienia tego.
to do this.
W związku z tym, że mają teoretycznie
Due to the fact that they theoretically
największe doświadczenie.
the greatest experience.
W zasadzie z tej perspektywy
Basically from this perspective
możesz mieć rację.
You might be right.
Nie ma chyba w świecie
There is probably no one in the world.
JavaScriptu podmiotu,
JavaScript of the subject,
który miałby większe doświadczenie
which would have more experience
w tworzeniu takiego
in creating such a
rozwiązania.
solutions.
No a jak już mówimy o innych językach
Well, since we're talking about other languages...
silnie typowanych, no to
strongly favored, well then
warto też powiedzieć coś o
It's also worth mentioning something about
alternatywach
alternatives
dla Typescriptu.
for Typescript.
Ja znam dwie.
I know two.
Znam Flow
I know Flow.
i słyszałem o Hegel.
And I heard about Hegel.
Miałeś przyjemność
You had the pleasure.
którymiś?
which ones?
Jak mówię Flow
How I say Flow
chyba korzystałeś przy okazji Reacta
You probably used React at some point.
z tego co...
from what...
Dokładnie tak.
Exactly so.
To jest coś co
This is something that
pewnie często spotykamy, prawda?
We probably meet often, right?
Czy też często spotkanie
Do you also meet often?
rozwiązanie do typowania propsów
solution for typing props
chociażby w Reactie.
even in React.
Ale nie miałem jakiegoś
But I didn't have any.
głębszego doświadczenia.
deeper experience.
Chociaż z tego co pamiętam
Although from what I remember
jest to coś relatywnie podobnego
it is something relatively similar
do zoda, powiedzmy.
to the zoda, let's say.
Czyli miejsca, w którym możemy sobie
So the place where we can...
za pomocą takich zwykłych obiektów
using such ordinary objects
JavaScriptowych,
JavaScript's,
gdzieś tam nałożyć te
somewhere to apply these
walidacje na ten nasz kod.
validations on our code.
Ale nie powiedziałbym, że miałem
But I wouldn't say that I had.
jakieś wspaniałe doświadczenia
some wonderful experiences
z tego typu narzędziami.
with this type of tools.
Zazwyczaj też to tarcze,
Usually, it's also the shields.
które wynikało z korzystania
that resulted from the use
z nich,
of them,
ilość dodatkowego kodu,
the amount of additional code,
specyfiki pisania tego kodu,
the specifics of writing this code,
też to jak on wyglądał
also how he looked
było raczej
it was rather
nieciekawe
uninteresting
dla mnie
for me
i wydawało mi się zazwyczaj,
And it usually seemed to me,
że to przynosi więcej dodatkowej pracy,
that it brings more extra work,
która jest w większości wypadków
which is in most cases
bezsensowna i nigdy
senseless and never
nie zobaczyłem w tych alternatywach
I didn't see in these alternatives.
niczego
nothing
specjalnego,
special
ale może to ma to już
but maybe that's what it already has
maszynne doświadczenie.
machine experience.
Porównując do TypeScriptu
Compared to TypeScript
na przykład Hegla,
for example Hegel,
to tak naprawdę
it's really
TypeScript jest
TypeScript is
takim językiem, który daje nam
such a language that gives us
nie tylko
not only
wprowadza nam typy,
introduces us to types,
ale dodaje też sporo innych rzeczy
but it also adds a lot of other things
jak na przykład nowe funkcjonalności
such as new functionalities
tworzenia klas.
class creation.
Daje nam pewien taki
It gives us a certain something.
lukier składniowy,
syntax sugar,
syntax sugar
syntax sugar
i daje nam jakieś funkcjonalności
and gives us some functionalities
dodatkowe do składni,
additional to syntax,
jak chociażby elementy zabezpieczające
such as safety elements
metody w klasach,
methods in classes,
jak private, protected
like private, protected
czy public.
Is it public?
Więc te wszystkie operatory
So all these operators
dodatkowe, które się pojawiają
additional ones that appear
to wszystko dostaniemy w pakicję z TypeScriptem.
We will get all of this in a package with TypeScript.
Natomiast Hegel
Meanwhile, Hegel
jest tylko type checker,
it's just a type checker,
który dodaje do
which adds to
JavaScriptu typy.
JavaScript types.
I
I
na tym polega jego
that is what it consists of
zadanie.
task.
Więc
So
wydaje mi się, że to są
I think they are
bardziej narzędzia dla osób, które
more tools for people who
nie potrzebują TypeScriptu
they don't need TypeScript
w takiej postaci, w jakiej
in the form in which
on jest dostarczony.
he is delivered.
Nie potrzebują tak potężnego narzędzia.
They do not need such a powerful tool.
Chcą po prostu dać
They just want to give.
coś prostego do swojego kodu.
something simple for your code.
Wiadomo,
It is known,
w dzisiejszych czasach
nowadays
TypeScript jest
TypeScript is
zintegrowany z o wiele większą
integrated with a much larger
liczbą bibliotek
the number of libraries
czy też aplikacji.
or the application.
A zatem o wiele łatwiej
And therefore much easier.
jest chociażby taką aplikację
there is at least such an application
z TypeScriptem uruchomić.
run with TypeScript.
Natomiast w momencie, kiedy mamy aplikację
On the other hand, at the moment when we have the application
czysto JSową i możemy wybrać
purely JS and we can choose
co chcemy, ale nie chcemy
what we want, but do not want
wchodzić zbyt głęboko i przebudowywać
to enter too deeply and rebuild
całej naszej apki,
the entire our app,
no to taki Hegel czy Flow pewnie
Well, it's probably something like Hegel or Flow.
się nada.
it is suitable.
I da nam to,
And it will give us that,
czego oczekujemy na samym początku.
what we expect at the very beginning.
Pytanie, czy na dalszych etapach nie będziemy chcieli
The question is whether we won't want to at later stages.
pójść w stronę TypeScriptu, no bo
to move towards TypeScript, because
jeżeli nam się spodoba to silne typowanie
if we like this strong typing
i da nam
and it will give us
sporo wartości, to
quite a lot of value, that
czy ten TypeScript nie będzie naturalnym
Isn't this TypeScript going to be natural?
następnym krokiem.
the next step.
To już jest pewnie kwestia bardziej
It's probably more a matter of
zespołu, który
the team that
musi podjąć decyzję o tym,
must make a decision about that,
w czym chce pisać, jak chce pisać,
what he wants to write in, how he wants to write,
ale też pewnie decyzja biznesowa.
but it’s probably also a business decision.
Tak, ale tu
Yes, but here
w ogóle ciekawy wątek
It's an interesting thread overall.
nasz też nam się trochę radzi,
we're also doing a bit better too,
o którym też rozmawialiśmy
about which we also talked
przy okazji Bana i
by the way Bana and
Teno,
Teno,
o którym rozmawialiśmy
that we talked about
przy okazji Bana i Teno,
by the way, Bana and Teno,
czyli łatwości wprowadzenia
which means ease of implementation
tego typu rozwiązań do istniejących
this type of solutions to existing
już projektów.
already projects.
I jeśli chodzi o TypeScript,
And when it comes to TypeScript,
to przecież też mamy jak najbardziej
We certainly have that as well.
te pomocy w kompilatorze, ale o JS,
these help in the compiler, but about JS,
i możemy nawet jeden
and we can even have one
plik mieć TypeScriptowy
to have a TypeScript file
i teoretycznie wszystko będzie działać.
And theoretically, everything will work.
Co więcej, nie musisz
Furthermore, you don't have to.
mieć żadnego pliku TypeScriptowego
have no TypeScript file
i mieć TypeScript w projekcie.
and have TypeScript in the project.
Ale to wynika z natury języka.
But it comes from the nature of the language.
To jest język, który jest
This is a language that is
kompilowany, czy też transpilowany
compiled or transpiled
do JavaScriptu ostatecznie.
to JavaScript ultimately.
Więc w zasadzie
So basically
każdy kod JavaScriptowy
every JavaScript code
będzie
will be
działał poprawnie
it worked correctly
w TypeScriptie.
in TypeScript.
To brzmi trochę jak jakiś koszmar
That sounds a bit like some kind of nightmare.
z pierwszych dni pracy.
from the first days of work.
Opowiadałem na rozmowie rekrutacyjnej,
I talked about it during the job interview,
że mają TypeScript, wchodzę do projektu,
that they have TypeScript, I am entering the project,
otwieram, test comp i wszystkie pliki
I'm opening, test comp and all files.
JSowe.
JSowe.
A co?
And what?
Tutaj jeszcze mi się tak skojarzyło,
Here, I was reminded of something.
bo są też takie narzędzia,
because there are also such tools,
takie języki silnie typowane,
such strongly typed languages,
które możemy kompilować na przykład
which we can compile for example
do JavaScriptu
to JavaScript
jak na przykład Hexa.
for example Hexa.
Więc w zasadzie
So basically
po co JavaScript czy TypeScript
What is the point of JavaScript or TypeScript?
i jak możemy sobie
and how can we manage?
wykorzystać narzędzie, język,
use a tool, language,
który będzie
which will be
dawał nam,
he was giving us,
który będzie,
which will be,
jak to jest napisane na stronie
as it is written on the page
języka Hexa,
Hexa language,
tym, czym JavaScript powinien być.
what JavaScript should be.
Więc z tej perspektywy
So from this perspective
w świecie, gdzie
in a world where
JavaScript jest głównym językiem
JavaScript is the main language.
w web dewelopmencie,
in web development,
a jednocześnie
and at the same time
mamy tak dużo
we have so much
różnych kompilatorów
different compilers
i transpilerów,
and transpilers,
wykorzystanie jakiegokolwiek
the use of any
języka silnie typowanego,
strongly typed language,
który będzie ostatecznie i tak
which will ultimately be anyway
czystym JavaScriptem
pure JavaScript
jest w zasadzie tylko i wyłącznie
is essentially only and exclusively
czystą formalnością.
a mere formality.
Z mojego doświadczenia
From my experience.
TypeScript to jest mega fajne narzędzie
TypeScript is a really cool tool.
do pracy.
to work.
Dużo ułatwia, dużo poprawia
It makes a lot easier, it improves a lot.
i daje nam
and gives us
sporo
a lot
bezpieczeń na etapie
safety at the stage
dewelopmentu, które
development, which
pozwalają
allow
nam tą pracę wrzucić
to submit this work to us
na trochę inny poziom.
to a slightly different level.
Tak jak mówiłem na samym początku,
As I mentioned at the very beginning,
poprawia nam ten developer experience
this developer experience improves for us
i ułatwia te procesy, które są
and facilitates those processes that are
trochę irytujące
a little irritating
dla programistów, jak chociażby
for programmers, such as
refaktoryzacja, tworzenie
refactoring, creation
dokumentacji, czy właśnie
documentation, or just
testowanie, pisanie testów
testing, writing tests
jednostkowych chociażby.
even individual ones.
Mhm.
Uh-huh.
Nie wiem jak u Ciebie Mateuszu,
I don't know about you, Mateusz,
ale ja mam wrażenie
but I have the impression
ze swojej pracy z TypeScriptem,
from my work with TypeScript,
które relatywnie
which is relatively
rzadko mi się zdarza przy
I rarely happen to be present.
narzędziach, czy rzeczach
tools or things
dodatkowych poza kodem
additional outside of the code
i powiedzmy, że TypeScript jest taką rzeczą,
And let's say that TypeScript is such a thing,
no bo mamy te typy i tak dalej,
because we have these types and so on,
to też o to trzeba dbać.
That also needs to be taken care of.
Nigdy nie miałem wrażenia, że to jest
I never had the impression that this is
niepotrzebne i że robię coś
unnecessary and that I am doing something
bez sensu, a jeśli miałem
nonsense, and if I had
to w jakiś super
it's super in some way
specyficznych przypadkach,
specific cases,
zawsze miałem wrażenie,
I always had the impression,
że ta wartość, którą on
that this value, which he
dodaje, mimo tego, że tej
I add, despite the fact that this.
dodatkowej, drobnej pracy, którą trzeba
additional, minor work that needs to be done
w niego włożyć, jest
to put into him, is
zdecydowanie warta tego, co
definitely worth it, what
dostaje z powrotem.
getting it back.
Z biegiem lat
As the years go by
myślę,
I think,
że masz dużo racji, ale
that you are much right, but
ja też z biegiem lat nauczyłem się, że
I too, over the years, have learned that
nie zawsze należy
not always should
dopisywać te typy.
to write these guys down.
Są takie miejsca, gdzie po prostu
There are places where simply
lepiej
better
polegać na mechanizmach wnioskowania
rely on reasoning mechanisms
TypeScriptu,
TypeScript,
gdzie to TypeScript
where is TypeScript
podejmie decyzję, jaki typ
will make a decision on what type
danej wartości jest
the given value is
wpisany, czy też powinien
registered, or should it be
być w kodzie, niż
to be in the code, than
samodzielne dopisywanie tych typów
independent addition of these types
w każdym możliwym miejscu.
in every possible place.
I to
Me too
jest coś, czego ja się nauczyłem przez ostatnie lata
There is something I have learned over the last few years.
i daje mi to takie poczucie,
and it gives me such a feeling,
że mam
that I have
możliwość
possibility
tworzenia kodu statycznie
static code generation
typowanego, ale mam też
predicted, but I also have
poczucie, że
the sense that
nie jest on niepotrzebny, bo
it is not unnecessary, because
kod nie staje się przeładowany,
the code does not become overloaded,
jeśli ja dobrze rozumiem ten TypeScript
if I understand this TypeScript correctly
i wiem, kiedy TypeScript
And I know when TypeScript.
jak zadziała, czy też jakie
how it will work, or what kind
będzie jego wnioskowanie na temat typów.
his reasoning about types will be.
W pewnych miejscach
In certain places
rzeczywiście czasami daje to
indeed sometimes it gives that
dużo, dużo możliwości
a lot, a lot of possibilities
i
i
to poczucie, o którym Ty mówiłeś,
it's the feeling that you talked about,
gdzie
where
wydawało się to niepotrzebne
it seemed unnecessary
było u mnie, ale w początkowych,
it was with me, but in the beginning,
że tak powiem,
so to speak,
dniach, etapach mojej pracy z
days, stages of my work with
TypeScriptem jako takim.
TypeScript as such.
Myślę, że to,
I think that it,
co piszczysz, już Mateusiu
What are you squeaking about, already Mateusz?
na samym początku opisywałeś,
at the very beginning, you described,
to myślę, że jest
I think it is.
właśnie idealny sposób wykorzystania
just the perfect way to utilize
TypeScripta, czyli
TypeScript, which is
zakładanie tych barier
establishing these barriers
i
i
pisanie tych typów
writing these types
tak naprawdę
actually
w jak najmniejszej ilości
in the smallest amount possible
miejsc i staranie się,
places and striving,
żeby one były tylko,
so that they are only,
żeby ten TypeScript
to make this TypeScript
działał tak naprawdę,
it actually worked,
czy też powiedzmy w tym momencie,
or let's say at this moment,
kiedy on rzeczywiście jest potrzebny
when he is really needed
i kiedy przysłowiowo możemy
And when can we proverbially...
sobie strzelić w kolano, kiedy
to shoot oneself in the knee, when
coś w tym
there is something in it
obiekcie zmiennej funkcji
object of a variable function
zostanie zwrócone, czy trafi do
will be returned or will go to
nas coś innego.
We are something different.
Zaczęliśmy od wniosku, w zasadzie od
We started with the application, basically from
precyzy, że TypeScript może
precisely, that TypeScript can
nie jest już potrzebny, ponieważ wiele
it is no longer needed because many
projektów porzuca go
the projects abandon him
na rzecz czystego JavaScriptu,
in favor of clean JavaScript,
ale chyba oboje się zgodzimy,
but I think we both can agree,
że
that
to porzucenie nie jest takie
This abandonment is not like that.
jednoznaczne, ponieważ
unequivocal, because
TypeScript jest jednym
TypeScript is one
jednak z najpopularniejszych
one of the most popular
języków front-endu,
front-end languages,
jest językiem, który daje sporo
it is a language that gives a lot
wartości i ułatwia wiele rzeczy,
values and makes many things easier,
a te najbardziej
and the most
newralgiczne elementy, takie
critical elements, such
właśnie jak tworzenie dokumentacji
just like creating documentation
w bibliotekach, mogą być
in libraries, they can be
rozwiązywane na różnorakie sposoby.
solved in various ways.
No i tutaj mamy do dyspozycji właśnie
And here we have available just that.
JSDocs. Jeśli chodzi o przyszłość
JSDocs. When it comes to the future.
JavaScriptu
JavaScript
i TypeScriptu,
and TypeScript,
warto wspomnieć o właśnie
It's worth mentioning about just that.
ECMAScript Proposal,
ECMAScript Proposal,
na temat właśnie
on the subject of just
tworzenia typów
creating types
w Javascriptie
in Javascript
i wydaje mi się, że to jest fajny
And I think it's nice.
kierunek, zresztą podobnie jak Tobie,
direction, similarly to you,
że jest to fajny kierunek
that it is a cool direction
rozwoju tego języka,
the development of this language,
podobnie zresztą jak to miało miejsce
similarly to how it was the case
w przypadku
in the case of
chociażby
even if
Pythona, inne języki
Python, other languages
warto poznać, warto
It’s worth knowing, it’s worth it.
się zaznajomić, natomiast chyba w tym momencie
to familiarise oneself, however I believe at this moment
nie ma nic, co mogłoby
there is nothing that could
zagrozić pozycji TypeScriptu.
to threaten the position of TypeScript.
Ze swojej strony
From my side.
na pewno myślę, że
I definitely think that
warto korzystać
it's worth using
z TypeScriptu i warto
from TypeScript and it's worth
poznać go, jeżeli nie mieliście jeszcze takiej
to get to know him, if you haven't had one like that yet
okazji, ponieważ
occasion, because
TypeScript daje naprawdę sporo możliwości
TypeScript offers really a lot of possibilities.
i naprawdę wiele
and really a lot
ułatwia, wprowadzając
facilitates by introducing
ten
ten
te doświadczenia,
these experiences,
tą przyjemność
that pleasure
z programowania na troszeczkę inny
from programming to a slightly different one
poziom.
level.
Super podsumowanie Mateuszu.
Great summary, Mateusz.
Myślę, że
I think that
tak ostatnia myśl to
so the last thought is
w momencie, kiedy jeszcze nie mieliście
at the moment when you still didn't have
okazji skorzystać z
take advantage of
TypeScriptu i jesteście na projekcie, w którym
TypeScript and you are on a project where
jest standard JavaScript, to chyba trzeba
It's standard JavaScript, I guess that's necessary.
uciekać, bo to już jak wyszło
to run away, because that's how it turned out
to już jest standard.
This is already standard.
No takie małe faux pas.
Just a little faux pas.
Dziękujemy wszystkim
Thank you to everyone.
słuchaczom, dziękujemy Tobie
to the listeners, we thank You
słuchaczu za to, że byłeś
listener for being there
z nami przez te kilkadziesiąt minut.
with us for these few dozen minutes.
Zachęcamy
We encourage.
oczywiście do subskrybowania,
of course to subscribe,
polubienia, komentowania
likes, commenting
i wszelkich
and all
kontaktów z nami.
contacts with us.
Będziemy bardzo wdzięczni
We will be very grateful.
za udostępnienie naszego
for sharing our
podcastu. No i do usłyszenia
of the podcast. Well, until we hear each other again.
za jakiś czas.
in some time.
Continue listening and achieve fluency faster with podcasts and the latest language learning research.