Správný počet argumentů

V JavaScriptu můžete funkci zavolat s menším počtem argumentů, než kolik má parametrů, nebo s větším. Parametr bez argumentu má hodnotu undefined a přebytečné argumenty se potichu zahodí:

function poskozeni(sila, obrana) {
    return sila - obrana;
}

console.log(poskozeni(12));
console.log(poskozeni(20, 5, 3));

V JavaScriptu tento kód vypíše:

NaN
15

NaN (anglicky not a number, „není číslo“) vznikne, když počítáte s undefined: 12 - undefined. Trojka ve druhém volání možná měla být bonus, jenže poskozeni pro ni nemá parametr, a tak se beze slova ztratí.

TypeScript počet argumentů kontroluje u každého volání. S doplněnými typy:

function poskozeni(sila: number, obrana: number): number {
    return sila - obrana;
}

console.log(poskozeni(12));
console.log(poskozeni(20, 5, 3));
main.ts(5,13): error TS2554: Expected 2 arguments, but got 1.
main.ts(6,30): error TS2554: Expected 2 arguments, but got 3.

Expected 2 arguments, but got 1: funkce má dva parametry, a tak čeká dva argumenty, jenže volání předává jen jeden. Když argument chybí, ukazuje sloupec na název funkce. Když je jeden navíc, ukazuje na první přebývající argument.

Když tuhle chybu uvidíte, podívejte se na první řádek funkce: co potřebuje a v jakém pořadí? Někdy je špatně volání, a tak opravíte volání. Jindy funkce opravdu potřebuje další hodnotu, a tak přidáte parametr. Pak pro vás TypeScript udělá něco moc užitečného: ukáže vám všechna volání v programu, která se musí změnit. Ve velkém programu jich můžou být desítky a jinak byste je museli hledat sami. V JavaScriptu by ta, na která zapomenete, potichu počítala s undefined.

Existují i parametry, které se smějí vynechat. Jsou tématem dalších dvou cvičení.

Pokyny

Opravte obě volání. Kira zasáhne skřeta za 8. Volání pro Bruna má o jeden argument víc: odstraňte trojku. Program vypíše:

Kira útočí. Cíl: skřet, poškození: 8
Bruno útočí. Cíl: vlk, poškození: 12

Příšery teď mají obranu, která poškození snižuje. Přidejte funkci utok čtvrtý parametr obrana typu number. TypeScript pak ohlásí obě volání, protože každému teď jeden argument chybí. Doplňte do nich obranu: skřet má obranu 2, vlk 5.

Teď obranu použijte: ve vráceném textu napište ${poskozeni - obrana} místo ${poskozeni}. Program vypíše:

Kira útočí. Cíl: skřet, poškození: 6
Bruno útočí. Cíl: vlk, poškození: 7

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

4/10