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.[2] Koska JavaScript on TypeScriptin osajoukko, olemassa olevat JavaScript-ohjelmat ovat myös kelvollisia TypeScript-ohjelmia.
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ää[3] tai Babel-kääntäjän avulla TypeScript voidaan muuttaa JavaScriptiksi.
TypeScript tukee määritystiedostoja, jotka voivat sisältää tyyppitietoja olemassa olevista JavaScript-kirjastoista, aivan kuten C++-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. TypeScript-otsikot Node.js-perusmoduuleille ovat myös saatavilla, mikä mahdollistaa Node.js-ohjelmien kehittämisen TypeScriptissä.[4]
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.[5] Virallinen laajennus mahdollistaa myös Visual Studio 2012:n tukemisen TypeScriptille. [6]Anders Hejlsberg, C#:n johtava arkkitehti ja Delphin ja Turbo Pascalin luoja, on työskennellyt TypeScriptin kehittämisen parissa.[7][8][9][10]
// Määritellään uusi tyyppi taulukolle numeroitatypeNumeroTaulukko=number[];// Esitellään muuttuja joka on tyyppiä NumeroTaulukkoconstminunNumerot:NumeroTaulukko=[0,1,2,3,4,5];// Jos yrität laittaa merkkijonon taulukkoon, TypeScript tulostaa virheen// minunNumerot.push("Hei");// Funktio joka ottaa NumeroTaulukko tyyppisen parametrinfunctionlaskeYhteen(numerot:NumeroTaulukko):number{letsumma=0;for(constnumeroofnumerot){summa+=numero;}returnsumma;}// Kutsutaan funktiota NumeroTaulukolla minunNumerotconstyhteensa=laskeYhteen(minunNumerot);console.log(`Kokonaissumma on ${yhteensa}`);