A TypeScript típusainak áttekintése
A TypeScript fő előnye, hogy lehetővé teszi statikus típusok hozzáadását a JavaScript-kódhoz. A típusok statikus korlátozásokat helyeznek a program entitásaira, például a függvényekre, változókra és tulajdonságokra, hogy a fordítók és a fejlesztői eszközök jobb ellenőrzést és segítséget nyújtsanak a fejlesztés során.
A TypeScript statikus fordítási idő típusú rendszere szorosan modellozza a JavaScript dinamikus futásidejű rendszerét. A statikus fordítási idő típusú rendszer lehetővé teszi, hogy pontosan kifejezze azokat a típuskapcsolatokat, amelyek várhatóan létezni fognak a programok futtatásakor. Ezt követően a TypeScript fordító előre ellenőrizze ezeket a feltételezéseket. A TypeScript-típuselemzés teljes egészében fordítási időben történik, és nem ad hozzá futási időt a program végrehajtásához.
A statikus típusok lehetővé teszik a kód szándékának jobb dokumentálását is, ami segít Önnek és más fejlesztőknek megérteni.
Let és const változók deklarálása
Az ECMAScript 2015 hozzáadta a let
változó deklarációhoz szükséges kulcsszavakat a const
JavaScriptben, ami kiküszöbölte a kulcsszóval kapcsolatos problémák egy részét a var
korábbi verziókban. Ez a módosítás lehetővé teszi a blokkszintű hatókörrel rendelkező változók deklarálását, és megakadályozza, hogy ugyanazt a változót többször deklarálja.
A TypeScript a változó deklarációkhoz a kulcsszavak és const
a let
kulcsszavak használatát ösztönzi.
Megjegyzés:
Emlékeztetőül, a különbség köztük az, hogy let
a deklarációk inicializálás nélkül is elvégezhetők, míg const
a deklarációk mindig egy értékkel vannak inicializálva. És const
a deklarációk hozzárendelése után soha nem rendelhetők hozzá újra.
Gyakorlat – Típuskövetkeztetés a TypeScriptben
A típusokat explicit típusú széljegyzetekkel vagy implicit típusú következtetésekkel társíthatja a változókhoz.
Az ajánlott típusjegyzetek nem kötelezőek a TypeScriptben. Explicit típus deklarálásához használja a szintaxist variableName: type
. Az utasítás let myVariable: number
számtípusként deklarálja a változót inicializálás nélkül. Másik lehetőségként inicializálhatja a változót a következővel let myVariable: number = 10
: .
A változó típusának típuskövetkeztetéssel történő kifejezéséhez használja ugyanazt a formátumot, amelyet a JavaScriptben használ. Például arra következtet, let myVariable = 10
hogy a változó típusa number
azért van, mert inicializálva van az értékkel 10
.
Nyissuk meg a játszóteret , és nézzük meg, hogyan működik ez.
Adja meg a következő változódeklarációkat:
let x: number; //* Explicitly declares x as a number type let y = 1; //* Implicitly declares y as a number type let z; //* Declares z without initializing it
A TypeScript mostantól típusként
number
kezelix
. A TypeScript arra is következtety
, hogy típusnak kell lennienumber
, mert ez az inicializáláshoz használt érték típusa. De mi történik, ha egy másik értéktípust próbál hozzárendelni hozzá? És mi történik a z változóval?Nyissa meg a Hibák lapot a Játszótéren, hogy figyelhesse az esetleges hibákat.
Írja be
x = 1
. Ennek a deklarációnak a várt módon kell működnie, hiba nélkül.Írja be
x = "one"
. A vártnak megfelelően ez a deklaráció azt jelzi, hogy a "sztring" típusú hiba nem rendelhető hozzá a "szám" típushoz, mert a statikus típusellenőrzés nem teszi lehetővé a változóhoz való hozzárendeléststring
.Írja be
y = "one"
. Ugyanez a hiba jelentkezik, mert a TypeScript arra következtet, hogy az y típusnumber
.Adja meg a változó nevét
y
, majd egy pontot, és még egy dolgot fog látni. Annak ellenére, hogy kifejezetten nem adott meg típust a változóhozy
, az Intellisense olyan metódusokat biztosít, amelyek csak egynumber
típusra vonatkoznak.Adja meg
z = 1
ész = "one"
. A TypeScript mindkettőt elfogadta, de miért? Ezek a deklarációk ugyanúgy működnek, mint a JavaScriptben, mivel a változóz
mostantól bármilyen hozzárendelt értéket elfogad. A TypeScript arra a következtet, hogy az
típus típusaany
azért van, mert nem rendelt hozzá típust, és nem inicializálta azt a deklarálásakor. A típusrólany
később többet is megtudhat.
Habár a TypeScriptben implicit módon is következtethet típuslekövetkeztetéssel, érdemes? A típuskövetkezmények révén a statikus típusellenőrzés és az Intellisense előnyeit élvezheti, és lehetővé teszi, hogy fokozatosan áttérjen a projektek explicit típusdeklarációira. A explicit típusdeklarációk azonban lehetővé teszik a kód szándékának jobb dokumentálását és a szándékosabb előrehaladt utat.
Típusok és altípusok a TypeScriptben
Mielőtt a típusokat változó deklarációhoz használjuk, nézzük meg a TypeScript típusait és altípusait.
Bármilyen típus
A TypeScriptben minden típus egy típusnak nevezett felső típus altípusa any
. A any
típus az egyetlen típus, amely bármilyen JavaScript-értéket jelölhet megkötések nélkül. Minden más típus primitív típusként, objektumtípusként vagy típusparaméterként van kategorizálva. Ezek a típusok különböző statikus korlátozásokat vezetnek be az értékükön.
Primitív típusok
A primitív típusok a boolean
, number
, string
, void
, null
és undefined
a felhasználó által definiált számbavétel vagy enum
típusok. A void
típus kizárólag egy érték hiányának jelzésére szolgál, például egy visszatérési értékkel nem rendelkező függvényben. A null
típusok az undefined
összes többi típus altípusai. Nem lehet explicit módon hivatkozni a típusokra és undefined
a típusokranull
. Csak ezeknek a típusoknak az értékeire lehet hivatkozni a literálok és undefined
a null
literálok használatával.
Objektumtípusok és típusparaméterek
Az objektumtípusok mind osztály-, felület-, tömb- és literáltípusok (minden, ami nem primitív típus).)
Az osztály- és felülettípusokat osztály- és interfészdeklarációkon keresztül vezetik be, és a deklarációkban szereplő név hivatkozik rájuk. Az osztály- és felülettípusok lehetnek olyan általános típusok, amelyek egy vagy több típusparamétert is tartalmazhatnak. Ezekről az objektumtípusokról a későbbi modulokban olvashat bővebben.