Výchozí hodnoty

Často je jasné, jakou hodnotu má parametr mít, když argument chybí. Když Kira útočí obyčejně, bez ničeho zvláštního, má její útok sílu 10. S nepovinným parametrem byste museli undefined kontrolovat sami. Výchozí hodnota je kratší a znáte ji z JavaScriptu:

function utok(prisera: string, sila: number = 10): string {
    return `Kira útočí. Cíl: ${prisera}, síla: ${sila}`;
}

console.log(utok("skřet"));
console.log(utok("troll", 25));

Vypíše:

Kira útočí. Cíl: skřet, síla: 10
Kira útočí. Cíl: troll, síla: 25

Parametr s výchozí hodnotou je také nepovinný: volání ho smí vynechat. Na rozdíl od sila?: number ale uvnitř funkce nikdy není undefined. Když argument chybí, má sila hodnotu 10. Uvnitř funkce je proto jeho typ prostě number a můžete s ním počítat bez jakékoli kontroly.

Typ můžete dokonce vynechat. Z sila = 10 si TypeScript odvodí, že sila je číslo, stejně jako u let sila = 10;. Ve skutečném kódu uvidíte oba zápisy. Volání se kontrolují v obou případech:

function utok(prisera: string, sila = 10): string {
    return `Kira útočí. Cíl: ${prisera}, síla: ${sila}`;
}

console.log(utok("vlk", "velká"));
main.ts(5,25): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.

I samotná výchozí hodnota musí odpovídat typu: sila: number = "10" skončí hláškou Type 'string' is not assignable to type 'number'.

Co kdy zvolit? Výchozí hodnotu, když existuje hodnota, která se hodí pro většinu volání. Nepovinný parametr s ?, když chybějící hodnota znamená něco jiného, jako u hosta bez titulu v minulém cvičení, kterého hostinský ohlásí jiným textem.

Typické chyby:

  • Otazník a výchozí hodnota zároveň: sila?: number = 10 skončí hláškou Parameter cannot have question mark and initializer. (parametr nemůže mít otazník i výchozí hodnotu). Výchozí hodnota parametr nepovinným dělá sama, takže otazník vynechte.
  • Parametry s výchozí hodnotou před povinnými. U function utok(sila = 10, prisera: string) skončí volání utok("skřet") hláškou Expected 2 arguments, but got 1. Argumenty se dosazují podle pořadí, a proto parametry s výchozí hodnotou dávejte na konec.

Pokyny

Většina hostů pije k jídlu vodu. Dejte parametru piti výchozí hodnotu "voda".

Většina hostů si navíc objedná jednu porci. Dejte parametru pocet výchozí hodnotu 1. Pak na konci programu vypište objednavka("Chléb"). Program vypíše:

1x Houbová polévka, k pití voda
2x Pečený kanec, k pití mošt
1x Chléb, k pití voda

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

6/10