Š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.

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!
45

Př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
10

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/10