Základní vestavěné typy
TypeScript obsahuje mnoho základních typů, které se nám budou hodit v každodenním programování. Pojďme si je projít.
string
Typ string popisuje řetězec znaků, zkrátka text. Příklad použití:
const oneWord: string = "Apple"
const empty: string = ""
const twoWords: string = oneWord + " iPhone"
number
Typ number popisuje čísla jako třeba 42 nebo racionální (desetinná) čísla 3,14. JavaScript, a tedy i TypeScript, nedělí čísla na celá a racionální, v TypeScriptu tak neexistují typy jako float nebo double, které můžete znát z jiných programovacích jazyků. Stejně tak neexistují typy signed (označuje čísla se znaménkem, tedy kladná i záporná) nebo unsigned (bez znaménka, jen kladná). Příklad použití:
const answerToEverything: number = 42
const pi: number = 3.1415
const sum: number = 12 + pi
boolean
Typ boolean může nabývat jen dvou hodnot: true a false. Příklad použití:
const yes: boolean = true
const no: boolean = false
const result: boolean = 10 < 20
Proč zrovna boolean?
Víte, proč se typ boolean jmenuje zrovna tak? Typ je pojmenovaný po slavném matematikovi jménem George Boole, po kterém je také nazvaná Booleova algebra. Základní dvouprvková Booleova algebra pak vlastně popisuje hodnoty true a false a jejich základní operace OR, AND a negaci.
undefined
Do typu undefined můžete uložit prostě jen hodnotu undefined, nic jiného. Metoda find na poli například vrací buď prvek pole nebo undefined. Příklad použití:
const nothing: undefined = undefined
null
Do typu null uložíte pouze hodnotu null, je podobný typu undefined. Nicméně do typu null nemůžete uložit hodnotu undefined a naopak:
const alsoNothing: null = null
const wontWork: null = undefined // tohle neprojde
const alsoWontWork: undefined = null // tohle neprojde
Array
Pole je jedním z nejčastějších typů, které můžeme v JavaScriptu a tedy i v TypeScriptu potkat. TypeScript podporuje dva způsoby, jak pole definovat. “Pole čísel” tak můžeme zapsat buď jako number[] nebo jako Array<number>. Oba zápisy jsou identické z pohledu funkčnosti, oba prostě definují pole, do kterého můžete ukládat pouze čísla:
const array1: number[] = [1, 2, 3]
const array2: Array<number> = [1, 2, 3]
Je čistě na vás, jaký styl zápisů polí buete preferovat. První styl, number[] je kratší, ale možná trochu méně čitelný, obzvlášť, když se ten zápis bude vyskytovat v hromadě dalších typů, kde může člověk ty dvě závorky snadno přehlédnout. Druhý styl, Array<number>, je trochu čitelnější, to slovo Array není snadné přehlédnout, ale je to zase delší a může to nabobtnat. Zápis number[] je navíc podobný zápisu [number], což ale znamená něco jiného. My spíš používáme styl Array<number>.
Pokud nadefinujeme pole nějakého typu, nemůžeme už do něj uložit typ jiný. Do pole čísel už tak nemůžeme uložit string nebo boolean:
const array3: number[] = [1, "dva"]
// error: Type 'string' is not assignable to type 'number'.
const array4: Array<string> = ["A", true]
// Type 'boolean' is not assignable to type 'string'.
Pokud chceme mít v poli prvky různých typů, musíme použít sjednocení typů, ale o tom si povíme později.
Objekt
Objekt je další typ, který se v JavaScriptu hojně použivá.