# Mis on TypeScripti funktsioonid? Mõiste, tüübikindlus ja kasutamine

TypeScriptiga saavad kasutajad deklareerida funktsioonide, parameetrite ja tagastatavate väärtuste tüübid. Kuna TypeScript kontrollib, kas kasutatakse õigeid andmetüüpe, aitab tüüpide deklareerimine **varakult avastada vigu** ja parandab koodi kvaliteeti.

## Mis on TypeScripti funktsioonid?

TypeScripti funktsioonid on [TypeScripti](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/mis-on-typescript/) keskne komponent. TypeScripti funktsioonid sarnanevad JavaScripti funktsioonidega, kuid neil on lisaks **staatilise tüüpimise** eelis. Selle lähenemisviisi puhul on muutujate, parameetrite ja tagastatavate väärtuste andmetüübid juba kompileerimise ajal määratletud ja neid ei saa täitmise ajal muuta. See vähendab vigu tootmiskeskkonnas.

TypeScripti funktsioonide teine omadus on nende paindlikkus. Funktsioonidel võivad olla valikulised ja **vaikimisi väärtused parameetritele**, mis lihtsustab nende kohandamist erinevate kasutusjuhtude jaoks. Võimalikud kasutusviisid hõlmavad andmetöötlust, kasutajaliidese interaktsioone, asünkroonset programmeerimist ja palju muud. Samuti on võimalik määratleda ülekoormused, et pakkuda erinevaid funktsioone sisendväärtuste põhjal.

Lisaks funktsioonide deklareerimisele saate TypeScriptis kasutada ka **abifunktsioone**. Need funktsioonid on lühemad ja neid kasutatakse sageli kaasaegsetes JavaScripti arendustavades.

TypeScripti funktsioonid on võtmetähtsusega TypeScripti projektides kasutatava koodi turvalisuse ja loetavuse suurendamisel. Samal ajal muudab nende paindlikkus ja kohandatavus need sobivaks mitmesuguste nõuete täitmiseks.

## Milline on TypeScripti funktsioonide süntaks?

**TypeScript on JavaScripti ülemkeel**. Seega on TypeScripti funktsioonide süntaks sarnane JavaScripti funktsioonide süntaksiga. Funktsiooni kood järgneb kaareklammerites `{ }`. Siin rakendatakse funktsiooni tegelikku loogikat. Siin on TypeScripti funktsiooni põhiline süntaks:

```typescript
function functionName(parameter1: type, parameter2: type): returnType {
    // Function Code
    return result; // (optional)
}
```

- **funktsioon**: see märksõna tähistab funktsiooni deklaratsiooni algust.
- **functionName**: see on funktsiooni nimi. Valige kirjeldav nimi, mis peegeldab funktsiooni ülesannet.
- **parameter1, parameter2**: need on parameetrid, mida funktsioon ootab. Iga parameeter on identifitseeritud oma nime ja oodatava andmetüübi (tüübi märge) järgi.
- **returnType**: see on andmetüüp, mida funktsioon tagastab. Võite määrata ka `void`, kui funktsioon ei tagasta väärtust.
- **return result** on valikuline ja seda kasutatakse, kui funktsioon peaks väärtuse tagastama.

TypeScripti funktsioone kutsutakse välja, kasutades funktsiooni nime, millele järgneb sulgudes. Sulgudes määratakse funktsiooni **argumendid (sisendväärtused)**, kui funktsioon ootab parameetreid.

```typescript
functionName(argument1, argument2, ...);
```

## TypeScripti funktsioonide näited

TypeScripti funktsioonid on äärmiselt mitmekülgsed ja neid saab kasutada arvutuste, operatsioonide ja keeruliste protsesside sooritamiseks rakendustes.

### Anonüümsed funktsioonid

Anonüümsed funktsioonid TypeScriptis on funktsioonid, millel **pole nime** ja **mis** edastatakse otse väljendites või argumentidena teistele funktsioonidele. Anonüümsed funktsioonid on kasulikud, kui vajate funktsiooni ainult ühes kohas koodis ja ei soovi sellele oma funktsiooni nime anda.

```typescript
var greet = function(name) {
    return "Hello, " + name + "!";
};
var message = greet("John");
console.log(message); // Output: "Hello, John!"
```

Selles näites salvestatakse anonüümne funktsioon muutujasse `greet` ja kutsutakse see hiljem välja, et luua isikustatud tervitussõnum numbrile `John`.

Anonüümsed funktsioonid hõlmavad ka **lambda-funktsioone**, mida tuntakse noolefunktsioonidena.

```typescript
const add = (a: number, b: number) => a + b;
const result = add(3, 5); // Output: 8
```

Siin määratakse muutujale `add` anonüümne funktsioon, mis liidab kaks arvu, ja seejärel kutsutakse see välja.

### Vaikimisi parameetrid

TypeScripti vaikimisi parameetrid (tuntud ka kui standardparameetrid) võimaldavad teil määratleda TypeScripti funktsioone nii, et neil oleksid **parameetrite vaikimisi väärtused**. Kui funktsiooni kutsutakse ja parameetrina ei edastata ühtegi väärtust, kasutatakse selle asemel vaikimisi väärtust.

```typescript
function greet(name: string = "World") {
    return "Hello, " + name + "!";
}
console.log(greet()); // Output: "Hello, World!"
console.log(greet("John")); // Output: "Hello, John!"
```

Siin on funktsioonil `greet` parameetri `name` vaikimisi väärtus `world`. Kui funktsiooni kutsumisel ei edastata väärtust `name`, kasutatakse automaatselt vaikimisi väärtust.

### Puhkeparameetrid

TypeScripti puhul võimaldavad puhkusparameetrid (tuntud ka kui puhkusoperaatorid või puhkusparameetri süntaks) koguda funktsioonis **määramata arvu argumente** [TypeScripti massiividena](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/typescripti-massiivid/). See on kasulik, kui soovite kirjutada funktsioone, mis suudavad töödelda erinevat arvu argumente.

```typescript
function sum(...numbers: number[]): number {
    let total = 0;
    for (const num of numbers) {
        total += num;
    }
    return total;
}
console.log(sum(1, 2, 3, 4, 5)); // Output: 15
```

Näites kogub funktsioon `sum` mis tahes arvu numbreid jääkparameetrina `numbers` ja liidab need kokku, et arvutada kogusumma. Saate edastada nii palju numbreid, kui soovite, ja funktsioon liidab need kõik kokku.

### Ülekoormus

Funktsiooni ülekirjutamist kasutatakse mitme sama nimega, kuid erinevate parameetrite või tagastustüüpidega funktsioonide deklaratsioonide määratlemiseks. See aitab TypeScriptil automaatselt valida õige funktsiooni deklaratsiooni vastavalt edastatud argumentidele ja teostada **tüübikontrolle**.

```typescript
function concatenate(a: string, b: string): string;
function concatenate(a: number, b: number): string;
function concatenate(a: any, b: any): string {
    return a.toString() + b.toString();
}
console.log(concatenate("Hello, ", "World")); // Output: "Hello, World"
console.log(concatenate(3, 5)); // Output: "35"
```

Eespool toodud näites on meil kaks funktsiooni ülekirjutust numbrile `concatenate`. Esimene võtab vastu kaks stringi ja teine kaks numbrit. Funktsioon ise teisendab edastatud argumendid stringideks ja ühendab need. TypeScript valib automaatselt sobiva ülekirjutuse edastatud argumentide põhjal ja teostab vajalikud tüübikontrollid.

Funktsioonide ülekirjutamine on eriti kasulik, kui **arendate API-d või raamatukogu**, kus soovite tagada, et funktsiooni kasutamine oleks lihtne ja veavaba, sõltumata kasutajate poolt esitatud erinevatest parameetritest.


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/typescripti-funktsioonid/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/typescripti-funktsioonid/) for AI/LLM consumption.