typescript, aurelia, react

Statistik og videoer om TypeScript

Kilde 21-02-17 ~4 minutters læsning · 847 ord

TypeScript bliver downloaded over 1 mio. gange om måneden fra NPM, fremgår det af denne side, som rummer en lang række links til materiale om Microsofts bud på et programmeringssprog, der kan transpileres til javascript.

Som det fremgår af npm-stat.com, passerede tallet dog 2 mio. om måneden i august 2016, og det har i øvrigt ligget på ca. 2,5 mio. om måneden siden. Faktisk ser det ud til, at TypeScript bliver downloaded stor set lige så meget som frontend-biblioteket React.

Desuden fremhæves det, at interessen for TypeScript har været kraftigt stigende i 3 år ifølge Google Trends.

Ifølge siden indgår TypeScript ikke blot som en central del af Angular 2 men også i Ionic, NativeScrupt, Aurelia og Dojo Toolkit.

Endelig rummer websiden et link til en video, danskeren Anders Hejlsberg, der er leder af Microsofts typescript-team.

Videoen hedder What is new in TypeScript? og er i øvrigt fra sidste år. Den gang tog jeg nedenstående noter fra videoen. Det kan måske spare en og anden for at skulle kikke hele den timelange video igennem.

Halvdelen af tilhørerne bruger TypeScript.

Eksplosiv popularitet for javascript de seneste 5 år.

TypeScript er javascript, som skalerer.

Javascript blev lavet på tre uger. Det var kun beregnet til at køre 100 eller max. 1000 linier.

TypeScript er et superset af Javascript, der kompilerer til javascript.

Al javascript er født typescript.

Typescript kører på alle browsere og alle os'er.

Typescript kommer med mange (små) opdateringer.

    Static typescript
    De nyeste egenskaber fra EcmaScript2015.

TypeScript kan kompileres helt ned til ES3. Kan nok godt gå ud fra, at alle klienter har EcmaScript 5 i dag. Men måske ikke en Google Android, som ikke er opdateret.

Anders Hejlsberg bruger vs code i sin demo.

Han bruger et interface til at gøre koden intelligent med. F.eks.:

interface person {
name: string;
age: number;
}

Dette interface er en slags type-deklaration, som kan hæftes på en variabel. F.eks.:

function sortByName(a: Person[]) {
// kode her
}

Herefter er der lige pludselig intellisence på brugen af variablen a.

Sådan kører du typescript kompileren i en kommandoprompt (stå i den relevante mappe):

c:\demo\intro> tsc -w main.ts

-w er watch mode-kompilering.

Når du kompilerer, forsvinder typerne i javascript-filerne. Men på grund af TypeScript har du fanget fejlene inden.

=> betyder fat arrow-function, som er ny i EcmaScript 2015. Det hedder lambda-funktion i andre sprog, og jeg har bl.a. lavet det i C#.

Fat arraow functions gør det lettere at skrive en funktion:

var arrFunc = arr.map(function(x) {
return x * x;
});
console.log(arr)

// using fat arrow
var arr = [5,3,2,9,1];
var arrFunc = arr.map((x) => x*x);

En class i typescript tager kompileres ned til et prototype-pattern i javascript.

Hvorlangt ned TypeScript komileres sættes op i tsconfig.json-filen!

I TypeScript er der refactoring. Dvs. at du kan ændre navnet på et ord (en klasse, en variabel etc), og herefter vil der så blive lave søg og erstat i de tilsvarende ord i resten af filen. Men kun hvis det er den rette type!!! Det skyldes, at TypeScript har semantic knowldes, og det giver safe re-factoring. Det var før umuligt i javascript.

Det var det, der før gjorde store javascript-filer read-only.

Det seneste år er TypeScript gået fra version 1.5 til 1.8.

1.6 indførte support af React - og vist også Angualar.
1.7 indførte support af Node.js + async await.

Udviklerne bag Angular 2.X har brugt TypeScript i et år, og de fleste af dem bruger også vscode.

Definitely typed er et github framework, som går ud på at konvertere javascript til typescript for debugging.

TypeScript føles som C# og java.

Han laver en demo med en Reddit-reader. Den udnytter, at der findes en json-reader på reddit:

https://www.reddit.com/r/aww.json

I index.html / system.config kan du sætte op, at typescript skal køre direkte uden kompilering (kompileren embeddes på websiden, hvorefter browseren oversætter til javascript). Det er meget lettere i udvikling, men skal selvfølgelig fjernes i produktion.

Han viser Reddit-readeren i to versioner: EN Angular og en React-version.

F12 laver show definition.

Man kan lave refactoring på tværs af JSX-filer i React.

webpack.config.js bundler alle js-filer sammen - lige som i ASP.NET MVC.

webpack bundler efter hver save.

Salsa er navnet på typeahead/code-completion i vs code - tror jeg nok.

Man kan skrive udkommenterede definitioner af klasser i javascript - og få intellisense i javascript i vs code. Det ligger i tsconfig.json. Man kan endda hente jQuery-definitioner - og lodash/underscore) ind i tsconfig.json og få intellisense på jQuery i javascript.

c:\demo\salsa>tsd install jquery

Behøver ikke skrive i TypeScript for at få intellisense. Man kan få hjælpen hentet ind i js-filerne med salsa.

TypeScript 2.0 ventes ude i maj-juni 2016.
Features:

- Non-nullable types
- Async/await downlevel support
- Read-only properties
- Declare this in functions

I TypeScript er undefined og null acceptable værdier både i number, string og boolean.

Der indføres mulighed for strictNullChecks.
Null bliver sin egen type. Det samme gør undefined. Typen af null er object. Typen af undefined er undefined!

Herefter er null og undefinded kun tilladt i unified types - :
string|null

Aurelia framework er bygget på TypeScript lige som Angular 2.