Mikor használjam a TypeScript-t?

Tavaly nyáron hatalmas kódbázist (18 000+ kódsor) kellett konvertálnunk JavaScript-ről TypeScript-re. Sokat tanultam mindegyik erősségéről és gyengeségéről, és amikor van értelme egyiket a másikra használni.

Ez a cikk már elérhető japán és kínai nyelven.

Amikor van értelme használni a TypeScript-t

Ha nagy kódbázisa van

Ha a kódalapja hatalmas, és egynél több ember dolgozik a projekten, akkor egy típusú rendszer segít elkerülni a sok gyakori hibát. Ez különösen igaz az egyoldalas alkalmazásokra.

Bármikor, amikor egy fejlesztő áttörő változásokat vezethet be, általában jó valamiféle biztonsági mechanizmus.

A TypeScript transzpiler feltárja a legkézenfekvőbb hibákat - bár varázslatosan nem szünteti meg a hibakeresés szükségességét.

Ha a kódbázisa nem olyan nagy, akkor valószínűleg nincs értelme típustírások hozzáadásával nagyobbá tenni. Több mint 180 fájlt konvertáltam JavaScript-ről TypeScript-re, és a legtöbb esetben hozzávetőlegesen 30% -kal növelte a teljes kódméretet.

Amikor a csapatod fejlesztői már megszokták a statikusan gépelt nyelveket

Ha Ön vagy a csapat többsége olyan erősen begépelt nyelvből származik, mint a C # vagy a Java, és nem akar all-in a Java-ra menni, akkor a TypeScript jó alternatíva.

Annak ellenére, hogy javaslom a Javascript alapos megtanulását, semmi sem akadályozza meg a TypeScript használatát a JavaScript ismerete nélkül. Valójában a TypeScript-et ugyanaz a srác hozta létre, aki C # -et készített, így a szintaxisok hasonlóak.

Cégemben C # fejlesztőkből álló csapatunk volt, akik egy kifinomult asztali alkalmazást kódoltak C # és WPF formátumban (ami alapvetően az asztali világ elülső fejlesztői eszköze). Ezután felkérték őket, hogy csatlakozzanak egy webes projekthez, mint full stack fejlesztők. Tehát rövid sorrendben megtanulhatták a TypeScript-et a kezelőfelület számára, majd felhasználhatták a C # -ismereteiket a háttér számára.

A TypeScript a Babel helyettesítésére szolgálhat

A régi Microsoft szokásos eszközöket vett fel - például a Java-t -, és saját, nem szabványos szolgáltatásokat adott hozzájuk - ebben az esetben J ++ -ot eredményezett. Ezután megpróbálnák arra kényszeríteni a fejlesztőket, hogy válasszanak a kettő közül.

A TypeScript pontosan ugyanaz a megközelítés - ezúttal a JavaScript esetében. Egyébként ez nem a Microsoft első villa a JavaScript-en. 1996-ban a JavaScript-et hagyták létre a JScript létrehozásához.

Noha ez kevésbé elterjedt eset, technikailag lehetséges az ES6 kód ESP-be történő átültetése a TypeScript transzpiler segítségével. Ez azért lehetséges, mert az ES6 lényegében a TypeScript részhalmaza, és a TypeScript transzpiler ES5 kódot generál.

A Typescript transzpilerje elég olvasható Javascript (EcmaScript 5) kódot generál kimenetként. Ez volt az egyik oka annak, hogy az Angular 2 csapata a TypeScript helyett a Google saját Dart nyelvét választotta.

Ezenkívül a TypeScript rendelkezik néhány jó tulajdonsággal, amelyek nincsenek az ES6-ban, például az enums és a tagváltozók inicializálásának képessége a konstruktorban. Nem vagyok nagy rajongója az öröklésnek, de hasznosnak tartom, ha nyilvános, magán, védett és elvont kulcsszavak szerepelnek az órákon. A TypeScript rendelkezik velük, az ES6 pedig nem.

A C # fejlesztők azt hitte, hogy szuper csodálatos, hogy képes legyen levelet lambda funkciója, mint a test egy módszer - amely megszüntette a fejfájást kapcsolódó ezt kulcsszó.

Amikor egy könyvtár vagy keretrendszer a TypeScript használatát ajánlja

Ha Angular 2-t vagy más könyvtárat használ, amely a TypeScript-t ajánlja, akkor hajrá. Vessen egy pillantást ezeknek a fejlesztőknek a véleményére az Angular 2 hat hónapos használata után.

Csak tudd, hogy - jóllehet a TypeScript az összes JavaScript-könyvtárat a dobozból ki tudja használni -, ha jó szintaxishibákat akarsz, külsőleg hozzá kell adnod a típusdefiníciókat ezekhez a könyvtárakhoz. Szerencsére a DefinitelyTyped kedves srácai építettek egy közösség által vezérelt repót, amelynek eszközei éppen ezt tették. De ez még mindig egy extra lépés a projekt felállításakor

(Mellékesen: JSX rajongók számára nézze meg a TSX-t.)

Amikor valóban szükségét érzi a sebességnek

Ez sokkot jelenthet Önnek, de a TypeScript kód bizonyos esetekben jobban teljesíthet, mint a JavaScript. Hadd magyarázzam.

JavaScript kódunkban sok típusú ellenőrzést végeztünk. Ez egy MedTech alkalmazás volt, így akár egy apró hiba is szó szerint végzetes lehet, ha nem kezelik megfelelően. Tehát sok függvénynek voltak olyan kijelentései, mint például:

if(typeof name !== ‘string) throw ‘Name should be string’

A TypeScript segítségével sok ilyen típusú ellenőrzést megszüntethetnénk.

Ez különösen a kód olyan részein mutatta meg hatását, ahol korábban volt teljesítménybeli szűk keresztmetszetünk, mert sok felesleges futásidejű ellenőrzést el tudtunk hagyni.

Tehát mikor jár jobban a gépírás nélkül?

Amikor nem engedhet meg magának plusz transzlációs adót

Nem tervezik a TypeScript natív támogatását a böngészőkben. A Chrome végzett kísérletet, de később visszavonta a támogatást. Gyanítom, hogy ennek köze van a felesleges futásidejű rezsiköltséghez.

Ha valaki edzőkerekekre vágyik, telepítheti azokat. De a kerékpároknak nem szabad állandó edzőkerékkel járniuk. Ez azt jelenti, hogy a böngészőben történő futtatás előtt mindig át kell töltenie a TypeScript kódot.

Az ES6 szabvány esetében ez teljesen más történet. Amikor az ES6-ot a legtöbb böngésző támogatja, akkor a jelenlegi ES6-ES5-ös átültetés szükségtelenné válik (frissítés: igen, igen!).

Az ES6 jelenti a legnagyobb változást a JavaScript nyelvén, és úgy gondolom, hogy a legtöbb programozó csak megelégszik vele. De azok a bátor kevesek, akik ki akarják próbálni a JavaScript kísérleti funkcióinak következő verzióját, vagy azokat a funkciókat, amelyeket még nem minden böngészőben valósítottak meg - mindenképpen át kell majd töltenie őket.

Átültetés nélkül egyszerűen módosítja a fájlt, és frissíti a böngészőt. Ez az. Nincs szükség figyelésre, igény szerinti transzponálásra vagy rendszerépítésre .

Ha a TypeScript-t választja, akkor végül elvégez néhány extra könyvelést a Javascript-könyvtárak és keretrendszerek típusdefiníciói számára (a DefinitelyTyped használatával vagy a saját típusú kommentárok megírásával). Ezt nem kell tennie a tiszta JavaScript projekteknél.

Amikor el akarja kerülni a furcsa hibakeresési éles eseteket

A Sourcemaps megkönnyíti a Typescript hibakeresését, de a status quo nem tökéletes. Vannak igazán idegesítő és zavaró éles esetek.

Emellett van néhány probléma az „this” kulcsszó és a hozzá csatolt tulajdonságok hibakeresésével (utalás: a „_this” a legtöbb esetben működik). Ennek oka, hogy a Sourcemaps jelenleg nem rendelkezik megfelelő támogatással a változókhoz - bár ez a jövőben változhat.

Amikor el akarja kerülni az esetleges teljesítménybüntetéseket

A projektünkben több mint 9000 sor régi, jó ES5 JavaScript volt, amely tiszta lóerőt adott egy 3D WebGL vászonhoz. Így tartottuk.

A TypeScript transzpiler (csakúgy, mint a Bábel) rendelkezik olyan funkciókkal, amelyek extra kód létrehozását igénylik (öröklés, enum, generikusok, aszinkron / várakozás stb.). Nem számít, milyen jó a transzpilerje, nem tudja felülmúlni a jó programozó optimalizációit. Ezért úgy döntöttünk, hogy egyszerű ES5-ben tartjuk a hibakeresés és a telepítés megkönnyítése érdekében (semmilyen transzláció nélkül).

Ennek ellenére a teljesítménybüntetés valószínűleg elenyésző, összehasonlítva egy típusú rendszer előnyeivel és a legtöbb projekt korszerűbb szintaxisával. De vannak olyan esetek, amikor ezredmásodpercek, sőt mikroszekundumok számítanak, és ezekben az esetekben nem ajánlott semmiféle átültetés (még Babel, CoffeeScript, Dart stb. Esetén is).

Vegye figyelembe, hogy a Typescript nem ad hozzá extra kódot a futásidejű típusok ellenőrzéséhez. Az összes típusellenőrzés az átvitel időpontjában történik, és a típusjegyzetek eltávolításra kerülnek a létrehozott Javascript-kódból.

Amikor maximalizálni akarja a csapat agilitását

Gyorsabb beállítani valamit a JavaScript-ben. A típusú rendszer hiánya agilitást és egyszerű dolgokat vált. Ez megkönnyíti a dolgok megtörését is, ezért győződjön meg róla, hogy tudja, mit csinál.

A Javascript rugalmasabb. Ne feledje, hogy egy típusú rendszer egyik fő felhasználási esete az, hogy megnehezíti a dolgok megtörését. Ha a Typescript Windows, a Javascript Linux.

A JavaScript Land programban nem egy típusú rendszer edzőkerekeit kapja meg, és a számítógép feltételezi, hogy tudja, mit csinál, de sokkal gyorsabban és könnyebben tud manőverezni.

Ezt különösen fontos megjegyezni, ha még mindig a prototípus készítés fázisában van. Ha igen, ne pazarolja az idejét a TypeScript segítségével. A JavaScript sokkal rugalmasabb.

Ne feledje, hogy a TypeScript a JavaScript szuperhalmaza. Ez azt jelenti, hogy később szükség esetén könnyen konvertálhatja a JavaScript-et TypeScript-be.

A JavaScript VS TypeScript preferenciám

Összességében nincs egyetlen legjobb nyelv. De minden egyes projekt esetében létezik egy objektíven legjobb nyelv és könyvtár, keretrendszer, adatbázis és operációs rendszer, és… megkapja a képet.

Projektünknél volt értelme használni a TypeScript-t. Megpróbáltam néhány hobbi projektemet átalakítani a TypeScript-be, de nem érte meg az erőfeszítést.

Én személy szerint szeretem a TypeScript 5. részét:

  1. Teljes mértékben kompatibilis az ES6-tal. Nagyon jó látni, hogy a Microsoft tisztességesen játszik a többi böngészővel. Ökoszisztémánk profitálhat a Google, a Mozilla és az Apple erős riválisából. A Microsoft komoly energiákat költ rá - például minden platformon a Visual Studio Code-t írja a semmiből a TypeScript használatával a Google Chrome-on.
  2. A típusrendszer opcionális. C és Java háttérből származva azt tapasztaltam, hogy a JavaScriptben hiányzik a típusrendszer. De utáltam az időveszteséget, amikor futás közben hülye hibákkal találkoztam. A TypeScript lehetővé teszi számomra, hogy elkerüljem a sok általános hibát, így az igazi trükkös hibák kijavítására fordíthatom az időmet. Ez jó egyensúly. Tetszik. Ez az én ízlésem. Típusokat használok, amikor csak lehet, mert ez nyugalmat ad. De én vagyok az. Ha TypeScript-t használok, akkor nem akarok korlátozni az ES6 szolgáltatásaira.
  3. A TypeScript transzpilerből kijövő JavaScript-kód nagyon jól olvasható. Nem vagyok a Sourcemaps rajongója, ezért a hibakeresés nagy részét a generált JavaScript-en végzem. Teljesen fantasztikus. Teljesen megértem, miért választotta az Angular 2 a TypeScript-et a Dart helyett.
  4. A TypeScript fejlesztési élménye fantasztikus. A VS Code nagyon okos a JavaScript használatakor (egyesek szerint a legokosabb JS IDE). De a TypeScript egy teljesen új szintre emeli a határokat. A VSCode automatikus kiegészítése és visszafejlesztése sokkal pontosabban működik, és nem azért, mert az IDE szuper okos. Ez minden a TypeScript jóvoltából.
  5. A típusjegyzetek olyanok, mint egy alapszintű dokumentáció. Kijelentik, hogy milyen típusú adatok Minden függvény, azok eredményei és egyéb tippeket tetszik readonly, publicvagy privateattribútumokat. Tapasztalataim szerint, amikor megpróbáltam visszafejteni egy JavaScript kódot TypeScript-be, általában tisztább, szebb szerkezetű kódot kaptam. Valójában a TypeScript írása javította a sima JavaScript írását.

A gépírás nem mindenre ad választ. Még mindig rettenetes kódot írhat bele.

A TypeScript-gyűlölők utálni fognak, akár a változástól való félelem miatt, akár azért, mert ismernek valakit, aki ismer valakit, aki fél tőle. Az élet megy tovább, és a TypeScript egyébként új funkciókat vezet be a közösségébe.

De a React-hez hasonlóan a TypeScript is egyike azoknak a befolyásos technológiáknak, amelyek feszegetik webfejlesztésünk határait.

Akár a TypeScript-t használja, akár nem, nem árt kipróbálni, hogy kialakítsa saját véleményét róla. Tanulási görbéje van, de ha már ismeri a JavaScript-et, akkor sima lesz.

Itt van egy online valós idejű TS transzpiler, néhány példával, amely lehetővé teszi a TypeScript kód és annak megfelelő JavaScript kód összehasonlítását.

Itt van egy gyors bemutató és nagyon jó útmutató, de én inkább egy nyelvre hivatkozó srác vagyok. Ha tetszik a videó, íme az Udemy tanfolyam.

John Papának van egy rövid cikke az ES5-ről és a TypeScript-ről.

Van egy érdekes tanulmány, amely minden egyenlőt mutat, egy típusú rendszer 15% -kal csökkenti a hibákat.

Ja, és ha van kedve mellékes misszióba menni, olvassa el, miért a programozás a legjobb munka.