8. JavaScript のあいまいさを排除し、安全性・可読性・生産性を向上
interface I { }
class C { }
module M { }
{ s: string; }
number[]
() => boolean
// Number
var x: number; // 明示的
var y = 0; // y: number と同じ
// Boolean
var b: boolean; // 明示的
var yes = true; // yes: boolean = true と同じ
// String
var s: string; // 明示的
var n = "akira"; // n: string = "akira" と同じ
// Enum
enum Color { Red, Green, Blue }
var myColor = Color.Red;
Console.log(Color[myColor]); // Red
9. interface, class, namespace などのオブジェクト指向言語構文の導入
interface Dog {
name: string;
Talk: () => string;
}
class Corgi implements Dog {
name: string;
constructor(name: string) {
this.name = name;
}
Talk(): string {
return "Bow wow!";
}
}
class myDog extends Corgi {
constructor() {
super("reo");
}
Talk(): string {
return "Wan wan!";
}
}
namespace M {
export var reo = new myDog();
}
alert(M.reo.Talk());
10. ジェネリクス (Generics) 構文
アロー関数式 (ES2015 匿名関数構文)
Get / Set アクセサ構文 (プロパティ)
class Human<T> { ... }
var me = new Human<string>("Akira");
var a = function (x: number) { return Math.sin(x); } // 標準式
var b = x => Math.sin(x)
class Who {
private _name: string;
get Name() { return this._name; }
set Name(name: string) { this._name = name; }
}