Learning TypeScript

De vreo 2 saptamani m-am apucat sa invat TypeScript cu Angular 9, si am zis sa dedic un topic pentru resurse limbaj TypeScript:

https://www.tutorialsteacher.com/typescript

TypeScript poate fi folosit cu Deno pe back end Rest API, front end cu Angular 2+ sau orice alt framework SPA de UI, se poate folosi in implementare jocuri:

Pare inspirat din (C#, JavaScript ES 5, 2016) ai Generics ca in C#, C# si TypeScript sunt facute de aceeas persoana Anders Hejlsberg.

Visual Studio Code cu extensia potrivita pare IDE perfect pentru TypeScript.

1 Like

In caz ca TS nu este o cerinta pentru un proiect si pentru ca vad ca esti pasionat de .NET, nu este mai simplu de folosit Blazor?

Este cerinta pentru proiect, am incercat sa le zic colegilor mei de Blazor si au spus ca nu stiu pe nimeni sa il foloseasca in productie. Eu m-am jucat cu Blazor si am vazut ca ceea ce faci ruleaza mai rapid decat orice, viitorul o sa decida daca Blazor o sa ajunga mainstream.

2 Likes

O sa ajunga pentru ca economiseste programatori. Este exact ce facea si web forms pe vremuri cand nu aveai nevoie de super javascript programmers pentru un grid si un formular :slight_smile:

Dar, este clar ca nu o sa fie luat in brate de lume asa repede. Nici eu nu m-as risca daca este pentru un client. Orice tehnologie trebuie sa treaca de bolile copilariei. Chiar si de la Microsoft :slight_smile:

1 Like

o sa ajunga la pastele caiilor, web forms era o atrocitate,

1 Like

Mai vedem. Da, era o mizerie din multe puncte de vedere. Numai daca ma gandesc la viewstate-ul ala imens. Dar era usor de folosit fara sa fi prea Einstein.

La vechiul loc de munca se lucra in web forms. Mi s-a parut ca este modelul de programare desktop din Windows Forms adus pe web. Am zis pas la Webg Forms si am trecut pe asp net mvc.
Blazor mi se pare interesnat. De fapt cu tot ce vine la pachet. Insa, asa cum ai mentionat si tu, trebuie sa trwaca ceva timp. Sa capete maturitate. Dar deja incep sa apara articole si usor, usor lumea incepe sa scrie aplicatii in blazor.:slight_smile:

Inca mai sunt multe aplicatii scrise in batranul WebForms care mai trebuie intretinute etc :grin:

E interesant cum, odata ce avansezi in viata si in cariera de programator, capatand mai multa experienta, incepi sa eziti din ce in ce mai mult in trecerea la tehnologii noi care promit marea cu sarea.
Unii zic ca este din cauza ca “babalacii” :joy: invata mai greu tehnologiile noi, pe cand juniorii din echipa se plang ca “noi de ce nu putem folosi tehnologia asta noua, sau cealalta, ca sunt asa de cool”.

Eu, la cei 36 de ani ai mei, am inceput sa inteleg ambele parti. Multa vreme am fost de partea “tinerilor” si am incercat sa fac “push” la tehnologii noi prin toate proiectele la care am lucrat, prin orice metode posibile :).
Am trecut si eu prin ASP.NET WebForms, apoi Silverlight (tot un fel de Blazor cu C# in browser, dar aveai nevoie sa instalezi un plugin), apoi ASP.NET MVC Razor, apoi KnockoutJS, AngularJS si acum Angular cu Typescript.

Toate frameworkurile au fost bune la timpul lor, dar eu cred ca mai important este ce ramane dintr-un proiect daca “scoti” framework-ul din el? Cat % din proiect este agnostic de framework-ul folosit?
Cati dintre voi ati dezvoltat un proiect mare la care sa fi lucrat 1+ ani, apoi sa trebuiasca sa schimbati framework-ul si tehnologia la acelasi proiect?

Cine zice: “fac un proiect cu Angular, unul cu React, altul cu ASP.NET MVC, altul cu Blazor”, habar n-are ce inseamna un proiect mare.
Frameworkurile vin si se duc, multe proiecte raman care trebuie intretinute sau migrate la tehnologii mai noi :slight_smile:.

Astfel, eu cred ca o intrebare mai buna decat “Ce tehnologie sa folosim la acest proiect?” este “Cum sa dezvoltam acest proiect astfel incat sa fie cat mai usor de migrat la o alta tehnologie in viitor, adica sa fie framework-agnostic?”.

6 Likes

“Embrace, extend, and extinguish” (EEE),[1] also known as “embrace, extend, and exterminate”,[2] is a phrase that the U.S. Department of Justice found[3] was used internally by Microsoft[4] to describe its strategy for entering product categories involving widely used standards, extending those standards with proprietary capabilities, and then using those differences in order to strongly disadvantage its competitors.

Nu as folosi ceva de la microsoft pt development nici sa fie cea mai buna tehnologie din lume, strategia asta e prezenta chiar si in VScode cu extensii closed source, a mai fost si un articol cum au dus de nas un developer cu promisinea unui job / aquisition, picked his brain, pana i-au clonat proiectul.

1 Like

Domnule dvs sunteti un filozof in ale programarii. Nu zic la misto. Am mai citit comentarii interesante alt dvs.

Intrebam de Blazor de curiozitate, pentru ca pare ca rezolva multe. O sa vedem ce mai baga la asa nu. Pt moment, daca ai ochiul format, se observa un lag de la executia wasm-ului catre js si inapoi.

Eu sunt “babalacul” care si-a rupt capul cu majoritatea tehnologiilor incepand de la perl, servlets si toata cohorta care a urmat dupa. Invat al naiba de repede, dar stiu ce vrea sa zica LTS. Si mai stiu ca de multe ori nu se numara cat de repede invata cineva ceva, ci se numara banii iesiti din productivitatea lucurilor folosite pe termen lung, pt ca nu mai repeti greseli. Stiu si ca se ajunge la plafonarea oameniilor. Stiu mai stiu ca nu ati zis ceva cu rautate, ci pentru o discutie constructiva :slight_smile:

2 Likes

Eu sunt destul de lazy nu invat tehnologii noi pana nu mi le cere cineva gen Angular2+, TypeScript, am lucrat vreo 6 ani cu AngularJS si ma bucurasem ca am apucat sa il stapanesc destul de bine, desi observasem probleme de mentenabilitate cu JavaScript, urmaresc destul de mult ce scot astia de la JetBrains pe tooling dar si Microsoft, intr-adevar ultima versiune de Blazor nu e LTS(Long Term Support), mai intreb in stanga in dreapta daca a mai incercat cineva Blazor si ce parere are ca sa imi fac o impresie generala, apropo vad ca si Resharper isi imbunatateste Blazor support.

Edit: Eu cred ca holly grail in computer science sta in fundamente, educatie, tehnologiile se schimba, de aceea incerc sa inteleg cum functioneaza un compilator, un sistem de operare, o retea de calculatoare, etc si desigur algoritmi si structurile de date clasice care se preda in scoala.

2 Likes

In .NET 5 o sa vedem cum progreseaza Blazor cu AOT ala mai destept si probabil de .NET 6 (2021) o sa fie de folosit pt termen lng. Acum este un preview mai destept.

Vedeti aici https://www.devexpress.com/support/demos/#blazor o foosire in care puteti sa faceti comparatie cu UI-ul bazat pe JavaScript. Eu observ o diferenta de viteza in favoarea JS. Dar pot sa fie detalii de implementare.

Pe hartie Blazor pare misto, asa cum a fost si Silverlight la vremea lui si cred ca se adreseaza in primul rand programatorilor cu background de .NET. Voi vedeti un programator web clasic care stie Javascript foarte bine, sau un programator Java, sa foloseasca Blazor pentru urmatorul lui proiect web, sa zicem?

Blazor inseamna C#, iar C# este un limbaj complex care nu se invata in 2-3 luni cum se invata un nou framework de Javascript, de exemplu.
Recunosc ca nu stiu prea multe despre Blazor, dar daca este cat de cat asemanator cu Silverlight ca si idee, adica “scriem cod C# care de regula ruleaza pe server, dar pe care acum il rulam pe client/in browser”, eu ma tem ca multi vor cadea din nou in capcana de a scrie cod amestecat server-client, fara a avea un Web API bine definit si complet separat de client.

Apoi peste cativa ani te trezesti ca trebuie sa migrezi proiectul la alta tehnologie, dar stai: proiectul nostru este cuplat 100% de Blazor, nici macar un Web API independent nu avem pe care sa-l lasam asa cum este si sa rescriem doar frontendul. Sper sa nu fie asa, iar oamenii care dezvolta Blazor sa fi invatat din greselile trecutului si sa nu faca o noua struto-camila care are pretentia sa faca de toate, dar nimic cu adevarat bine.

Web-ul inseamna HTML, Javascript si CSS si tot asta va insemna si peste vreo 10 ani, zic eu.

Pe de alta parte, exista o multime de alte tehnologii cu care se dezvolta proiecte web de succes foarte mari, nu e musai sa fie totul doar Html si Javascript.

Personal eu nu vad Blazor ca fiind “next web framework” cum au fost AngularJS sau React la vremea lor, de exemplu. Blazor se adreseaza programatorilor care folosesc tehnologii Microsoft in special.

Cred ca problema nu se pune bine, problema este dacă WebAssembly is the next thing, care e un standard W3C, și C# nu e singurul limbaj care se compileaza în WebAssembly.

Poate e, poate nu. Eu tot aud de WebAssembly de minim 5-6 ani si inca nu l-am vazut :slight_smile:
Daca e the next thing, atunci Blazor nu mai are cine stie ce relevanta pentru ca inseamna ca poti sa folosesti orice limbaj, nu?

Pana una alta, cine vrea sa dezvolte proiecte web mai bune, ar face bine sa invete Javascript (sau Typescript), in loc sa tot ocoleasca “problema”. Cu Typescript e o placere sa faci proiecte web, mie mi se pare un limbar mai misto decat C# in anumite privinte.

1 Like

Eu cred ca holly grail in software development sta in Domain Driven Design :joy:.
De fapt nu glumesc, chiar cred asta.

Din moment ce poți scrie back end cu Deno în TypeScript s-ar putea sa ai dreptate legat de TypeScript, sigur se mai trezește cineva sa facă un compilator TypeScript => WebAssembly.

https://www.webassemblygames.com/



Cam asta se face acum in WebAssembly. Sunt si comparatii intre performanta JavaScript si WebAssembly. Ambele inving pe anumite task-uri.

Pana la urma sunt prea multe limbaje :slight_smile:

Daca ar fi dupa mine, cred ca erau necesare doar 3:
C - pentru locuri inguste unde trebuie sa ai maxim de performanta
Java - pentru aplicatii de tot felul (server/browser/desktop/mobile)
Shell scripting

Asa avem zeci de limbaje care pana la urma fac chestii foarte asemanatoare. Sunt doar orgoliile celor care le-au facut (oamenii sau firme).

Si da ar fi misto sa programam intr-un fel standardizat, independent de limba, ca sa le putem schimba intre ele. Dar, daca umanitatea nu s-a inteles la standarde pentru trei tipuri de limaje, cu siguranta la acelasi patern de design nu se pune nimeni de acord.

Deci domnilor sa ne bucuram de tehnologii. Cat mai multe cu putinta ca sa ne punem creierii la munca :slight_smile:

Wasm este deja aici și este folosit peste tot acolo unde e necesar. El a fost făcut să fie folosit împreună cu JS și nu sa l înlocuiască. Wasm îl găsești în Gaming, Grafica 3D, procesare etc (ex Figma )…
TypeScript merita învățat mai ales daca nu ești fan JS pentru că o să îți schimbe părerea. Nu ai nevoie de Deno sau alt framework, ci poți să-l folosești direct in orice proiect vrei (trebuie doar sa-l compilezi). Chiar daca TypeScript-ul se oprește / dispare atunci când faci build la aplicația, el face procesul de development mult mai ușor și plăcut.

8 Likes

O carte de TypeScript free:

https://basarat.gitbook.io/typescript/