SlideShare a Scribd company logo
1 of 23
Download to read offline
Palvelujen ohjelmointi JavaScriptillä
* Node.js
* TypeScript
Ahti Haukilehto
Sovelto
Microsoft Regional Director, Finland
Microsoft Certified Trainer
Professional Scrum Trainer
Sisältö
• Miksi JavaScript palvelimessa?
• Mitä on Node.js?
• Mitä on TypeScript?

2
Miksi JavaScript myös palvelimessa?
• Sama ohjelmointikieli ja osittain sama ohjelmointiympäristö kuin
työasemassa
• Alustariippumattomuus

• KISS
• Open Source

3
Miksi ei?
• Palvelinympäristö on usein staattinen, tarvitaanko palvelinpäässä
alustariippumattomuutta
• Laaja integrointitarve, valmiit komponentit (muita kuin JS)

• Valmiimpi kehitysympäristö
• Sovellusarkkitehtuurin selkeys – voi olla etu, että UX on täysin eriytetty
palvelujen toteuttamisesta

4
Node.js

5
Node.js in brief source: JSConf 2009
JSConf 2009
• Server-side Javascript
• Built on Google’s V8
• Evented, non-blocking I/O. Similar to EventMachine or Twisted.
• CommonJS module system.
• 8000 lines of C/C++, 2000 lines of Javascript, 14 contributors.

6
Mitä on node.js?
• JavaScript palvelimessa
• Event driven I/O
• Yksisäikeinen suoritus, kaikki requestit ajetaan samalla säikeellä
• Tehokas ja skaalautuva
• usean coren käyttö edellyttää toimenpiteitä
Node.js sisältö
• libuv – a high performance cross-platform evented I/O library
• V8 – Google’s JavaScript engine (the same that is used in Chrome)
• JavaScript ja C++ koodia
Nämä yhdessä muodostavat Node.js:n
Node.js asentaminen
• "Normaali" asennus
•
•
•
•

http://nodejs.org/
Asennusohjelmat Windowsille, OS X:lle ja muutamalle Linuxille
Myös lähdekoodi on saatavilla
Tarvittaessa github:sta saa halutun version

• "Azure"-asennus Node.js SDK
• Mikäli halutaan Azure Storage-modulit ja hieman suoraviivaisempi Azureintegrointi.
• http://www.windowsazure.com/en-us/downloads/?sdk=node

• IISNode – IIS:n ja Node.js:n integrointi
• https://github.com/tjanczuk/iisnode

9
Editors & Debuggers
• Cloud9 IDE https://c9.io/
• WebStorm http://www.jetbrains.com/webstorm/
• Komodo IDE http://www.activestate.com/komodo-ide
• ExlipseJS https://portawiki.abnoctus.com/view/NodeIDE.html
• And many many others
On Windows (Microsoft)

• Web Matrix
• Visual Studio 2013 (osittain)
• IISNode, sisältää myös debuggauksen
Node.js – Evented IO
• Kaikki IO – ja yleensäkin kaikki, mikä voi kestää – suoritetaan
asynkronisesti
• Node.js:n oma libuv-kirjasto on toteutettu näin
• Oma koodi pitäisi tehdä näin
• Kirjastot on tehty näin

• Luontevaa JavaScript –ohjelmoinnissa
• Mutta vähemmän luontevaa muille puolipiste-kieliä käyttäville

• Useita toteutustapoja
•
•
•
•

Eventloop
Callback
Publish/Subscribe
Stream

11
Modulit
• Node.js –sovellus voi käyttää ulkopuolisia moduleja.
• Moduulit ovat yleensä sovelluksen hakemistossa erillisissä tiedostoissa
Modulien lähteet
1. Built-in Modules
• esim. fs, http, crypto, os
• Käyttöönotto: var fs = require(‘fs’);

2. Projektissa tehdyt modulit
• jokainen .js –tiedosto on oma modulinsa
• modulissa exportoidaan se, mitä halutaan näyttää ulkopuolelle
• Käyttöönotto: var bar = require(‘../lib/bar’);

3. Kolmannen osapuolten modulit Node Package Manager (NPM) –
rekisteristä https://npmjs.org/
• Asennetaan npm install 'module name' –komennolla
• Käyttöönotto: var request = require(‘request’);
12
Mihin node.js soveltuu
• Voiko koko web-sivuston tehdä node:lla
• Kyllä voi http://nodejs.org/industry/
• Mutta tarviihan se ison panostuksen

• Luontevinta siellä, missä Node.js:n edut ovat merkittäviä
• suorituskyky
• JavaScript
• alustariippumattomuus

13
TypeScript

14
JavaScript
• Laajojen, ylläpidettävien (== enterprise scale) JS-sovellusten tekeminen
on haastavaa, ellei mahdotonta
• moni näistä haasteista kulminoituu tyyppijärjestelmän puuttumiseen
• intellisense-haste
• kontrahtien tekemisen haste
• käännösaikaisen tarkastamisen haasteet
• JS-kielen haasteet
• === on monelle kehittäjälle tuntematon
• this / closure –käsitteistä puhumattakaan
• JS modulointi on haastavaa

• Mutta se on välttämätön kieli alustariippumattomien client-sovellusten
tekemiseen
• joka BYOD-aikakaudella on välttämätöntä enterprise-sovelluskehityksessä

• JS:n tuki niin alustoiden kuin open-source kirjastojen puolesta on
ylivoimainen

15
TypeScript
• TypeScript tuo kehitys- ja käännösaikaisen tyyppijärjestelmän JS:n päälle
• JavaScript-koodi on sellaisenaan myös TypeScript-koodia
• Valid JavaScript is valid TypeScript
• Olemassa oleva JavaScript.js –tiedosto voidaan nimetä .ts –tiedostoksi ja kaikki
toimii

• TypeScript-kääntäjä tsc.exe kääntää .ts-tiedoston JavaScript:ksi
• Visual Studiossa tiedoston tallentamisen yhteydessä
• Käännöksen yhteydessä paljastuu kaikki tyyppitarkastuksessa havaitut virheet
• TypeScript-koodi toimii siis kaikilla alustoilla, kaikissa käyttiksissä, kaikissa
selaimissa

• Kehitysaikainen tyyppijärjestelmä mahdollistaa hyvän välinetuen
(intellisense)
• TypeScript on ainoastaan kehitysaikainen tyyppijärjestelmä, käännöksen jälkeen
ei ole mitään tarkistusta – sehän on vain JavaScript –koodia
• Kehittimiä: Visual Studio 2012 2013, Emacs, Vi,
http://www.typescriptlang.org/Playground/

• TypeScript on open-source –projekti
• http://www.typescriptlang.org

16
TypeScript ja vastaavat muut tuotteet
• CoffeeScript, DART, Ecma Script 6 (kun valmistuu, TS tukee)
http://smthngsmwhr.wordpress.com/2013/02/25/javascript-and-friends-coffeescript-dart-and-typescript/

17
TS koodin modulointi

Module
Interface

Class
Fields
Constructor
Properties
Functions
18
Tyyppijärjestelmä

19
Tyypin määrittely – Type Annotations ja Inference
// type Annotation
var num1: number = 7;
var num2: number;
// type inference, tyypin päättely käytön perusteella
// käytetään myös nimeä Contextual Typing
var num3 = 7;
var num4 = FunktioJokaPalauttaaNumberin( );

• Tyyppi on olemassa vain kehitysaikana,
käännöstuotoksessa (JavaScript) sitä ei ole
• Tyypittäminen on täysin vapaaehtoista
• mutta _erittäin_ suositeltavaa
• Type Annotationia tarvitaan kuitenkin melko harvoin, Contextual Typing _toimii_
Rajapinta callback-määrittelyssä
• Rajapinnan avulla voidaan esitellä callback-metodin rakenne
Moottorilla tulee olla
start ja stop-funktiot

interface IMoottori {
start() –metodi saa
callback-parametriksi on annettava funktio,
yhden parametrin,
joka hyväksyy nimi- ja käynnistyinimeltään callback
parametrit. Tyyppiturvallinen!
start(callback: (nimi:string, käynnistyi: boolean) =>
void): void;
callback() ei palauta
mitään

start() ei palauta
mitään

stop(callback: (nimi:string,
void): void;
}

sammutustapa: string) =>

21
Callback-rajapintaisen olion käyttäminen
intellisense pelittää ja kääntäjä tarkastaa

var am = new AutoMoottori('BMW V8');
am.start( (nimi: string, käynnistyi: boolean) =>
alert(nimi + " käynnissä:" + käynnistyi)
);
am.stop( (nimi, tapa) => alert(nimi + ':' + tapa));

• Intellisense

22
Mihin TypeScript sopii
• Kaikkeen JavaScript –ohjelmointiin
• Luontevinta siellä, missä “koko” sovellus tehdään JavaScriptillä
• suuri sovellus
• tarvitaan rajapintoja
• käytetään IDEä

23

More Related Content

Similar to Palvelujen ohjelmointi JavaScriptillä: Node.js ja TypeScript

Net ohjelmointi kertaus
Net ohjelmointi kertausNet ohjelmointi kertaus
Net ohjelmointi kertaus
Timo Tanila
 

Similar to Palvelujen ohjelmointi JavaScriptillä: Node.js ja TypeScript (20)

Net ohjelmointi kertaus
Net ohjelmointi kertausNet ohjelmointi kertaus
Net ohjelmointi kertaus
 
Store App -kehityksen aloittaminen
Store App -kehityksen aloittaminenStore App -kehityksen aloittaminen
Store App -kehityksen aloittaminen
 
Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113Oulu clojure-meetup-20181113
Oulu clojure-meetup-20181113
 
Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015
 
Windows 8
Windows 8Windows 8
Windows 8
 
Windows 7 Käyttöönottoprojekti
Windows 7 KäyttöönottoprojektiWindows 7 Käyttöönottoprojekti
Windows 7 Käyttöönottoprojekti
 
Java - analysointityökaluja
Java - analysointityökalujaJava - analysointityökaluja
Java - analysointityökaluja
 
Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017
 
API Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiäAPI Design: 7 kuolemansyntiä
API Design: 7 kuolemansyntiä
 
EPiServer7-MVC
EPiServer7-MVCEPiServer7-MVC
EPiServer7-MVC
 
Windows 8 yrityksen työasemana
Windows 8 yrityksen työasemanaWindows 8 yrityksen työasemana
Windows 8 yrityksen työasemana
 
W3 School Selenium 4.2.2013 @ W3 Group Finland, Kerava
W3 School Selenium 4.2.2013 @ W3 Group Finland, KeravaW3 School Selenium 4.2.2013 @ W3 Group Finland, Kerava
W3 School Selenium 4.2.2013 @ W3 Group Finland, Kerava
 
SUSE Manager 2.1
SUSE Manager 2.1SUSE Manager 2.1
SUSE Manager 2.1
 
W3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubW3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHub
 
Ser web
Ser webSer web
Ser web
 
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
 
FLOSS Manuals
FLOSS ManualsFLOSS Manuals
FLOSS Manuals
 
FLOSS Manuals
FLOSS ManualsFLOSS Manuals
FLOSS Manuals
 
Mac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusanaMac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusana
 
Ohjelmointikielet ja -paradigmat - kalvot 2014
Ohjelmointikielet ja -paradigmat - kalvot 2014Ohjelmointikielet ja -paradigmat - kalvot 2014
Ohjelmointikielet ja -paradigmat - kalvot 2014
 

More from Sovelto

More from Sovelto (20)

LOISTO-palvelu
LOISTO-palveluLOISTO-palvelu
LOISTO-palvelu
 
Sovelto Channel -esittely
Sovelto Channel -esittelySovelto Channel -esittely
Sovelto Channel -esittely
 
Windows 10 hallinnan näkökulmasta
Windows 10 hallinnan näkökulmastaWindows 10 hallinnan näkökulmasta
Windows 10 hallinnan näkökulmasta
 
Windows 10 käyttäjän näkökulmasta
Windows 10 käyttäjän näkökulmastaWindows 10 käyttäjän näkökulmasta
Windows 10 käyttäjän näkökulmasta
 
Tilaisuuden avaus: Kalaparvi liikkuu
Tilaisuuden avaus: Kalaparvi liikkuuTilaisuuden avaus: Kalaparvi liikkuu
Tilaisuuden avaus: Kalaparvi liikkuu
 
Ansaintamallin voi muuttaa
Ansaintamallin voi muuttaaAnsaintamallin voi muuttaa
Ansaintamallin voi muuttaa
 
Osallista ihmiset mukaan muutokseen
Osallista ihmiset mukaan muutokseen Osallista ihmiset mukaan muutokseen
Osallista ihmiset mukaan muutokseen
 
Ajankohtaista tutkimustietoa
Ajankohtaista tutkimustietoaAjankohtaista tutkimustietoa
Ajankohtaista tutkimustietoa
 
Yhteisöllinen tuottavuus liiketoiminnan tukena
Yhteisöllinen tuottavuus liiketoiminnan tukenaYhteisöllinen tuottavuus liiketoiminnan tukena
Yhteisöllinen tuottavuus liiketoiminnan tukena
 
Hyvinvointi ja tuottavuus
Hyvinvointi ja tuottavuusHyvinvointi ja tuottavuus
Hyvinvointi ja tuottavuus
 
Tietotyön uusi kulttuuri
Tietotyön uusi kulttuuriTietotyön uusi kulttuuri
Tietotyön uusi kulttuuri
 
Intune ja Azure RMS
Intune ja Azure RMSIntune ja Azure RMS
Intune ja Azure RMS
 
Azure Active Directory
Azure Active DirectoryAzure Active Directory
Azure Active Directory
 
3D-tulostaminen ja sen hyödyt käytännössä
3D-tulostaminen ja sen hyödyt käytännössä3D-tulostaminen ja sen hyödyt käytännössä
3D-tulostaminen ja sen hyödyt käytännössä
 
​Tervetuloa tutustumaan tehokkaampaan tuotekehitykseen
​Tervetuloa tutustumaan tehokkaampaan tuotekehitykseen ​Tervetuloa tutustumaan tehokkaampaan tuotekehitykseen
​Tervetuloa tutustumaan tehokkaampaan tuotekehitykseen
 
Seminaarin avaussanat
Seminaarin avaussanatSeminaarin avaussanat
Seminaarin avaussanat
 
Esimiehen työ on palvelua, Tilannejohtaminen
Esimiehen työ on palvelua, TilannejohtaminenEsimiehen työ on palvelua, Tilannejohtaminen
Esimiehen työ on palvelua, Tilannejohtaminen
 
Miten yritysarkkitehtuurilla kehitetään strategista johtamista
 Miten yritysarkkitehtuurilla kehitetään strategista johtamista Miten yritysarkkitehtuurilla kehitetään strategista johtamista
Miten yritysarkkitehtuurilla kehitetään strategista johtamista
 
Miten yritysarkkitehtuurilla parannetaan strategista johtamista?
Miten yritysarkkitehtuurilla parannetaan strategista johtamista?Miten yritysarkkitehtuurilla parannetaan strategista johtamista?
Miten yritysarkkitehtuurilla parannetaan strategista johtamista?
 
Case Kouvolan kaupunki: Millaisia haasteita olemme kohdanneet kokonaisarkkite...
Case Kouvolan kaupunki: Millaisia haasteita olemme kohdanneet kokonaisarkkite...Case Kouvolan kaupunki: Millaisia haasteita olemme kohdanneet kokonaisarkkite...
Case Kouvolan kaupunki: Millaisia haasteita olemme kohdanneet kokonaisarkkite...
 

Palvelujen ohjelmointi JavaScriptillä: Node.js ja TypeScript

  • 1. Palvelujen ohjelmointi JavaScriptillä * Node.js * TypeScript Ahti Haukilehto Sovelto Microsoft Regional Director, Finland Microsoft Certified Trainer Professional Scrum Trainer
  • 2. Sisältö • Miksi JavaScript palvelimessa? • Mitä on Node.js? • Mitä on TypeScript? 2
  • 3. Miksi JavaScript myös palvelimessa? • Sama ohjelmointikieli ja osittain sama ohjelmointiympäristö kuin työasemassa • Alustariippumattomuus • KISS • Open Source 3
  • 4. Miksi ei? • Palvelinympäristö on usein staattinen, tarvitaanko palvelinpäässä alustariippumattomuutta • Laaja integrointitarve, valmiit komponentit (muita kuin JS) • Valmiimpi kehitysympäristö • Sovellusarkkitehtuurin selkeys – voi olla etu, että UX on täysin eriytetty palvelujen toteuttamisesta 4
  • 6. Node.js in brief source: JSConf 2009 JSConf 2009 • Server-side Javascript • Built on Google’s V8 • Evented, non-blocking I/O. Similar to EventMachine or Twisted. • CommonJS module system. • 8000 lines of C/C++, 2000 lines of Javascript, 14 contributors. 6
  • 7. Mitä on node.js? • JavaScript palvelimessa • Event driven I/O • Yksisäikeinen suoritus, kaikki requestit ajetaan samalla säikeellä • Tehokas ja skaalautuva • usean coren käyttö edellyttää toimenpiteitä
  • 8. Node.js sisältö • libuv – a high performance cross-platform evented I/O library • V8 – Google’s JavaScript engine (the same that is used in Chrome) • JavaScript ja C++ koodia Nämä yhdessä muodostavat Node.js:n
  • 9. Node.js asentaminen • "Normaali" asennus • • • • http://nodejs.org/ Asennusohjelmat Windowsille, OS X:lle ja muutamalle Linuxille Myös lähdekoodi on saatavilla Tarvittaessa github:sta saa halutun version • "Azure"-asennus Node.js SDK • Mikäli halutaan Azure Storage-modulit ja hieman suoraviivaisempi Azureintegrointi. • http://www.windowsazure.com/en-us/downloads/?sdk=node • IISNode – IIS:n ja Node.js:n integrointi • https://github.com/tjanczuk/iisnode 9
  • 10. Editors & Debuggers • Cloud9 IDE https://c9.io/ • WebStorm http://www.jetbrains.com/webstorm/ • Komodo IDE http://www.activestate.com/komodo-ide • ExlipseJS https://portawiki.abnoctus.com/view/NodeIDE.html • And many many others On Windows (Microsoft) • Web Matrix • Visual Studio 2013 (osittain) • IISNode, sisältää myös debuggauksen
  • 11. Node.js – Evented IO • Kaikki IO – ja yleensäkin kaikki, mikä voi kestää – suoritetaan asynkronisesti • Node.js:n oma libuv-kirjasto on toteutettu näin • Oma koodi pitäisi tehdä näin • Kirjastot on tehty näin • Luontevaa JavaScript –ohjelmoinnissa • Mutta vähemmän luontevaa muille puolipiste-kieliä käyttäville • Useita toteutustapoja • • • • Eventloop Callback Publish/Subscribe Stream 11
  • 12. Modulit • Node.js –sovellus voi käyttää ulkopuolisia moduleja. • Moduulit ovat yleensä sovelluksen hakemistossa erillisissä tiedostoissa Modulien lähteet 1. Built-in Modules • esim. fs, http, crypto, os • Käyttöönotto: var fs = require(‘fs’); 2. Projektissa tehdyt modulit • jokainen .js –tiedosto on oma modulinsa • modulissa exportoidaan se, mitä halutaan näyttää ulkopuolelle • Käyttöönotto: var bar = require(‘../lib/bar’); 3. Kolmannen osapuolten modulit Node Package Manager (NPM) – rekisteristä https://npmjs.org/ • Asennetaan npm install 'module name' –komennolla • Käyttöönotto: var request = require(‘request’); 12
  • 13. Mihin node.js soveltuu • Voiko koko web-sivuston tehdä node:lla • Kyllä voi http://nodejs.org/industry/ • Mutta tarviihan se ison panostuksen • Luontevinta siellä, missä Node.js:n edut ovat merkittäviä • suorituskyky • JavaScript • alustariippumattomuus 13
  • 15. JavaScript • Laajojen, ylläpidettävien (== enterprise scale) JS-sovellusten tekeminen on haastavaa, ellei mahdotonta • moni näistä haasteista kulminoituu tyyppijärjestelmän puuttumiseen • intellisense-haste • kontrahtien tekemisen haste • käännösaikaisen tarkastamisen haasteet • JS-kielen haasteet • === on monelle kehittäjälle tuntematon • this / closure –käsitteistä puhumattakaan • JS modulointi on haastavaa • Mutta se on välttämätön kieli alustariippumattomien client-sovellusten tekemiseen • joka BYOD-aikakaudella on välttämätöntä enterprise-sovelluskehityksessä • JS:n tuki niin alustoiden kuin open-source kirjastojen puolesta on ylivoimainen 15
  • 16. TypeScript • TypeScript tuo kehitys- ja käännösaikaisen tyyppijärjestelmän JS:n päälle • JavaScript-koodi on sellaisenaan myös TypeScript-koodia • Valid JavaScript is valid TypeScript • Olemassa oleva JavaScript.js –tiedosto voidaan nimetä .ts –tiedostoksi ja kaikki toimii • TypeScript-kääntäjä tsc.exe kääntää .ts-tiedoston JavaScript:ksi • Visual Studiossa tiedoston tallentamisen yhteydessä • Käännöksen yhteydessä paljastuu kaikki tyyppitarkastuksessa havaitut virheet • TypeScript-koodi toimii siis kaikilla alustoilla, kaikissa käyttiksissä, kaikissa selaimissa • Kehitysaikainen tyyppijärjestelmä mahdollistaa hyvän välinetuen (intellisense) • TypeScript on ainoastaan kehitysaikainen tyyppijärjestelmä, käännöksen jälkeen ei ole mitään tarkistusta – sehän on vain JavaScript –koodia • Kehittimiä: Visual Studio 2012 2013, Emacs, Vi, http://www.typescriptlang.org/Playground/ • TypeScript on open-source –projekti • http://www.typescriptlang.org 16
  • 17. TypeScript ja vastaavat muut tuotteet • CoffeeScript, DART, Ecma Script 6 (kun valmistuu, TS tukee) http://smthngsmwhr.wordpress.com/2013/02/25/javascript-and-friends-coffeescript-dart-and-typescript/ 17
  • 20. Tyypin määrittely – Type Annotations ja Inference // type Annotation var num1: number = 7; var num2: number; // type inference, tyypin päättely käytön perusteella // käytetään myös nimeä Contextual Typing var num3 = 7; var num4 = FunktioJokaPalauttaaNumberin( ); • Tyyppi on olemassa vain kehitysaikana, käännöstuotoksessa (JavaScript) sitä ei ole • Tyypittäminen on täysin vapaaehtoista • mutta _erittäin_ suositeltavaa • Type Annotationia tarvitaan kuitenkin melko harvoin, Contextual Typing _toimii_
  • 21. Rajapinta callback-määrittelyssä • Rajapinnan avulla voidaan esitellä callback-metodin rakenne Moottorilla tulee olla start ja stop-funktiot interface IMoottori { start() –metodi saa callback-parametriksi on annettava funktio, yhden parametrin, joka hyväksyy nimi- ja käynnistyinimeltään callback parametrit. Tyyppiturvallinen! start(callback: (nimi:string, käynnistyi: boolean) => void): void; callback() ei palauta mitään start() ei palauta mitään stop(callback: (nimi:string, void): void; } sammutustapa: string) => 21
  • 22. Callback-rajapintaisen olion käyttäminen intellisense pelittää ja kääntäjä tarkastaa var am = new AutoMoottori('BMW V8'); am.start( (nimi: string, käynnistyi: boolean) => alert(nimi + " käynnissä:" + käynnistyi) ); am.stop( (nimi, tapa) => alert(nimi + ':' + tapa)); • Intellisense 22
  • 23. Mihin TypeScript sopii • Kaikkeen JavaScript –ohjelmointiin • Luontevinta siellä, missä “koko” sovellus tehdään JavaScriptillä • suuri sovellus • tarvitaan rajapintoja • käytetään IDEä 23