19. 動的型付けから静的型付けへ
TypeScript Type System
• 静的型付けシステムの導入
• JavaScript のあいまいさを排除
• 安全性・可読性・生産性の向上
• 型付けするか否かは自由
• 動的型付けの利点も生かせる
• any 型: すべての型の基本
• プリミティブ (基本) 型
• number, string, boolean,
null, undefined, enum
• オブジェクト型
• class, module, interface
• void 型: 戻り値なしの関数で使用
interface I { }
class C { }
module M { }
{ s: string; }
number[]
() => boolean
20. 静的型付け記述例 (プリミティブ型)
TypeScript Type System Example
// Any
var x: any; // 明示的
var y; // y: any と同じ
var z: { a; b; }; // z: { a: any; b: any; } と同じ
function f(x) { // f(x: any): void と同じ
console.log(x);
}
// Number
var x: number; // 明示的
var y = 0; // y: number と同じ
var z = 123.456; // z: number = 123.456 と同じ
// Boolean
var b: boolean; // 明示的
var yes = true; // yes: boolean = true と同じ
var no = false; // no: boolean = false と同じ
// String
var s: string; // 明示的
var empty = “”; // empty: string = “” と同じ
var abc = ‘abc’; // abc: string = “abc” と同じ
// Null
var n: number = null; // 基本型は Null 設定可
var x = null; // x: any = null と同じ
// Undefined
var n: number; // n: number = undefined と同じ
var x = undefined; // x: any = undefined と同じ
// Enum
enum Color { Red, Green, Blue }
var myColor = Color.Red;
Console.log(Color[myColor]); // Red
30. TypeScript ロードマップ
Compiler and Language Improvements
• 0.9.0
• Generics
• Overload on constants
• "export ="
• Improve compiler performance
• Improvements to type system to help model a larger variety of JS libraries
• 0.9.1
• 'typeof' support in type expression
• Project integration support in VS plugin
• 1.0
• Stabilization
• 1.x
• Async/Await, Mixins, Protected access
• ES6-compatible codegen