9. Vorteile von Typescipt
- Keine Typenfehler mit Strong Typing
- ES6 kann schon jetzt benutzt werden:
- Besser strukturiert mit Klassen
- Viele Sprachverbesserungen wie
let, for … of, ()=>..., etc.
10. - Boolean, Number, String
- Array, Tuple
- Enum
- Function
- Object
- Void
- Any
Statische Typen
24. Interfaces
interface AnimalInterface {
name:string;
constructor(theName: string);
move(meters: number) ;
}
interface ReptileInterface {}
interface SnakeInterface
extends AnimalInterface, R eptileIn
{
constructor(name: string)
move(meters: number);
}
class Animal implements AnimalInterface {
constructor(public name: string) {}
move(meters: number = 0) {
alert( this.name + " moved " +
meters + "m.");
}
}
class Snake extends Animal implements
SnakeInterface, R eptileInterface {
constructor(name: string) { super
(name); }
move(meters: number = 5) {
alert("Slithering...");
super.move(meters);
}
}
25. Arrow Functions ()=>...
- kein function keyword
- kein Scope
- this von outer scope vererbt
- arguments bleibt unverändert
- bind hat keine Wikrung
26. Arrow Functions ()=>...
mit brackets
var inc = (arg: number):number => {
return a + 1
}
ohne brackets
var inc = (a)=>a+1
JavaScript
var inc = function(arg:number):number {
return a + 1
}
27. Arrow Functions ()=>...
JavaScript
function Person(age) {
this.age = age
this.growOld = (function(){
++this.age;
}).bind(this);
}
let person = new Person(1);
person.growOld()
TypeScript
function Person(age) {
this.age = age
this.growOld = ():void=>{
++this.age;
}
}
let person = new Person(1);
person.growOld()
28. let
▪ Variablen in ES5 sind function scoped
▪ Let definiert block scoped Variablen
▪ Zugriff auf let Variablen vor ihrer
definition wirft ReferenceError
29. let
JavaScript
var foo = 123;
if (true) {
var foo = 456;
}
console.log(foo); // 456
TypeScript
let foo = 123;
if (true) {
let foo = 456;
}
console.log(foo); // 123
30. let
JavaScript
var vals = [];
for (var x = 0; x < 4; ++x)
vals.push(()=>x);
console.log(vals.map(cb=>cb()));
// [4, 4, 4, 4]
typeScript
let vals = [];
for (let x = 0; x < 4; ++x)
vals.push(()=>x);
console.log(vals.map(cb=>cb()));
// [0, 1, 2, 3]
31. String Templates - Multiline String
JavaScript
var lyrics = "Never gonna give you up
nNever gonna let you down";
TypeScript
var lyrics = `Never gonna give you up
Never gonna let you down`;
32. String Templates - String Interpolation
JavaScript
var lyrics = 'Never gonna give you up';
var a = '<div>' + lyrics + '</div>';
var b = ‘1 and 1 one make ' + (1 + 1)
TypeScript
var lyrics = 'Never gonna give you up';
var a = `<div>${lyrics}</div>`;
var b = `1 and 1 one make ${1 + 1}`
33. for … of
var someArray = [9, 2, 5];
for (var item in someArray) {
console.log(item); // 0,1,2
}
var someArray = [9, 2, 5];
for (var item of someArray) {
console.log(item); // 9,2,5
}
55. function *g(limit) {
for (var i = 0; i < limit; i++) {
yield i;
}
}
for (let i of g(100)) {
console.log(i);
}
var array = [...g(50)];
var [first, second, ...rest] = g(100);
Backup: generators