The Type System in TypeScript
Masayuki Ioki
TypeScript
Static Typing in Typescript
Structural Typing
class A {
x:number;
}
class B {
x:number;
}
var a:A = new B(); // O.K.
the type of variables
// strict
var x : number = 1;
// o.k. the type of x is number.
var x = 0;
// ??
var x;
x = 0;
x = ‘a’; // o.k.
(weak) type inference
// strict
var fnc = (x:number) : number { x }
// o.k.
var fnc = (x:number) { x }
// error
var fnc = (x:number) { if(x==0) return 0; else return ‘a’; }
// ??
var fnc = (x:number) { if(x==0) return 0; }
Objects have types
// error
var fnc = (x:number) => { if(x==0) return {a:0}; else return {b:0}; }
// ???
var fnc = (x:number) => { var o={};if(x==0) o['a']=0; return o; }