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: 25Parametr 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 = 10skončí hláškouParameter 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áškouExpected 2 arguments, but got 1.Argumenty se dosazují podle pořadí, a proto parametry s výchozí hodnotou dávejte na konec.
Jak psát:
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í vodaZačněte programovat zdarma
6/10