Šipkové funkce
Šipkovým funkcím píšete typy na stejná místa jako ostatním funkcím: typ parametru za jeho název a návratový typ za závorku s parametry, před šipku:
const dvojnasobek = (n: number): number => n * 2;
const popis = (jmeno: string): string => `Hrdina: ${jmeno}`;
console.log(dvojnasobek(21));
console.log(popis("Kira"));Vypíše:
42
Hrdina: Kira(n: number): number => čtěte jako „dostane číslo n a vrátí číslo“. Pravidla jsou stejná jako u funkcí zapsaných pomocí function. Návratový typ smíte vynechat a TypeScript si ho odvodí. Každé volání se kontroluje. A parametr bez typu je chyba, i když je zapsaný krátce, bez závorek:
const dvojnasobek = (n) => n * 2;
const popis = jmeno => `Hrdina: ${jmeno}`;main.ts(1,22): error TS7006: Parameter 'n' implicitly has an 'any' type.
main.ts(2,15): error TS7006: Parameter 'jmeno' implicitly has an 'any' type.V JavaScriptu se šipková funkce s jedním parametrem smí psát bez závorek: jmeno => .... S typem jsou závorky potřeba: (jmeno: string) => .... Bez nich dostanete chyby, které moc nepomůžou:
const popis = jmeno: string => `Hrdina: ${jmeno}`;main.ts(1,20): error TS1005: ',' expected.
main.ts(1,29): error TS1005: ';' expected.Návratový typ se hodí hlavně tehdy, když je tělo ve složených závorkách. Tuhle chybu znáte z kurzu JavaScriptu: složené závorky bez return, takže funkce vrátí undefined. S návratovým typem ji TypeScript zachytí:
const dvojnasobek = (n: number): number => {
n * 2;
};
console.log(dvojnasobek(21));main.ts(1,34): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.Bez návratového typu by program vypsal undefined. Se složenými závorkami musíte napsat return n * 2;. Nebo závorky vynechte: (n: number): number => n * 2.
Šipková funkce, která nic nevrací, má návratový typ void a funkce bez parametrů má prázdné závorky: const oslava = (): void => console.log("Hurá!");. Fungují i výchozí hodnoty: (zivoty: number, leceni: number = 10): number => zivoty + leceni.
Jak psát:
Pokyny
Dejte parametrům obou šipkových funkcí typy: sila je number a nazev je string. Program se pak spustí, ale na druhém řádku vypíše undefined.
Dejte oběma šipkovým funkcím návratové typy: number u ohnivaKoule a string u nazevKouzla. TypeScript pak ohlásí chybu ve funkci nazevKouzla. Opravte ji, aby funkce text vracela. Program vypíše:
12
MRÁZ!
45Přepište funkci vylec na šipkovou funkci uloženou v const vylec, se stejnými typy parametrů a návratovým typem number. Program vypíše stejné řádky jako předtím.
Na konci programu vypište vylec(ohnivaKoule(2), 4): výsledek jedné šipkové funkce jde rovnou do druhé a TypeScript kontroluje, že se číslo dostane tam, kde se číslo čeká. Program vypíše:
12
MRÁZ!
45
10Začněte programovat zdarma
7/10