# TypeScript

| TypeScript |
| --- |
|  |
| Paradigma | useita: olio-ohjelmointi, funktionaalinen, imperatiivinen, geneerinen |
| Tyypitys | ankkatyypitys, rakenteellinen, asteittainen |
| Julkaistu | 2012 |
| Kehittäjä | Microsoft |
| Vakaa versio | 7.0.2 (8. heinäkuuta 2026) |
| Vaikutteet | C#, Java, JavaScript |
| Vaikuttanut | AtScript, AssemblyScript |
| Käyttöjärjestelmä | alustariippumaton |
| Verkkosivu |  |
| Infobox OK |

**TypeScript** on Microsoftin kehittämä ja ylläpitämä ohjelmointikieli, joka lisää valinnaisen staattisen tyypityksen JavaScriptiin. Se on suunniteltu suurten sovellusten kehittämiseen ja transpiloitavaksi JavaScriptiksi. Koska JavaScript on TypeScriptin osajoukko, olemassa olevat JavaScript-ohjelmat ovat myös kelvollisia TypeScript-ohjelmia.

## Käyttö

TypeScriptiä voidaan käyttää JavaScript-sovellusten kehittämiseen sekä asiakas- että palvelinpäässä (kuten Node.js tai Deno). Transpilaatiossa on useita vaihtoehtoja. TypeScriptin oletustarkistusta voidaan käyttää tai Babel-kääntäjän avulla TypeScript voidaan muuttaa JavaScriptiksi.

## Ominaisuudet

TypeScript tukee määritystiedostoja, jotka voivat sisältää tyyppitietoja olemassa olevista JavaScript-kirjastoista, aivan kuten otsikkotiedostot voivat kuvata olemassa olevien objektitiedostojen rakennetta. Näin muut ohjelmat voivat käyttää tiedostoissa määritettyjä arvoja ikään kuin ne olisivat staattisesti kirjoitettuja TypeScript-kokonaisuuksia. Suosituille kirjastoille, kuten jQuerylle, MongoDB:lle ja D3.js:lle on kolmannen osapuolen otsikkotiedostoja. Jos kirjastolle ei ole saatavilla otsikkotiedostoja, ohjelmoijan on itse määriteltävä tyypit, jotta kirjastoa voisi käyttää. TypeScript-otsikot Node.js-perusmoduuleille ovat myös saatavilla, mikä mahdollistaa Node.js-ohjelmien kehittämisen TypeScriptissä.

TypeScript-kääntäjä itse on kirjoitettu TypeScriptillä ja käännetty JavaScriptiksi. Se on lisensoitu Apache License 2.0 -lisenssillä. TypeScript on mukana ensiluokkaisena ohjelmointikielenä Microsoft Visual Studio 2013 Update 2:ssa ja uudemmissa C#:n ja muiden Microsoft-kielten ohella. Virallinen laajennus mahdollistaa myös Visual Studio 2012:n tukemisen TypeScriptille. Anders Hejlsberg, C#:n johtava arkkitehti ja Delphin ja Turbo Pascalin luoja, on työskennellyt TypeScriptin kehittämisen parissa.

## Rajoitukset

TypeScript-kääntäjä poistaa tyypit käännöksen aikana (engl. *type erasure*). Tyypitys siis antaa suojaa tyyppivirheitä vastaan kehityksen aikana, mutta ei takaa, että tyypit olisivat ajon aikana oikein.

TypeScriptiä on kritisoitu vaikeasti tulkittavista tyyppivirheviesteistä.

## Esimerkki

```
// Määritellään uusi tyyppi taulukolle numeroita
type NumeroTaulukko = number[];

// Esitellään muuttuja joka on tyyppiä NumeroTaulukko
const minunNumerot: NumeroTaulukko = [0, 1, 2, 3, 4, 5];

// Jos yrität laittaa merkkijonon taulukkoon, TypeScript tulostaa virheen
// minunNumerot.push("Hei");

// Funktio joka ottaa NumeroTaulukko tyyppisen parametrin
function laskeYhteen(numerot: NumeroTaulukko): number {
 let summa = 0;
 for (const numero of numerot) {
 summa += numero;
 }
 return summa;
}

// Kutsutaan funktiota NumeroTaulukolla minunNumerot
const yhteensa = laskeYhteen(minunNumerot);

console.log(`Kokonaissumma on ${yhteensa}`);

```

## Katso myös

* Dart
* Kotlin

## Lähteet

## Aiheesta muualla

* TypeScript- projekti GitHubissa
* TypeScript-kielen määritys
* CATS Cross Platform TypeScript Editor