typescript 1.0 オーバービュー

44
TypeScript 1.0 オーバービュー 井上 章 (いのうえ あきら) http://aka.ms/chack 日本マイクロソフト株式会社 デベロッパー エクスペリエンス & エバンジェリズム統括本部 エバンジェリスト

Upload: akira-inoue

Post on 08-Sep-2014

19 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: TypeScript 1.0 オーバービュー

TypeScript 1.0 オーバービュー

井上章 (いのうえあきら)

http://aka.ms/chack

日本マイクロソフト株式会社

デベロッパーエクスペリエンス & エバンジェリズム統括本部

エバンジェリスト

Page 2: TypeScript 1.0 オーバービュー

JavaScript とWeb 技術のこれまでを振り返る

TypeScript登場の背景を知る

TypeScript 1.0 の言語仕様と利用方法を学ぶ

セッションのゴールSession Takeaways

Page 3: TypeScript 1.0 オーバービュー
Page 4: TypeScript 1.0 オーバービュー
Page 5: TypeScript 1.0 オーバービュー
Page 6: TypeScript 1.0 オーバービュー

HTML & Plug-ins

FlashSilverlight

Java AppletActiveX…

Page 7: TypeScript 1.0 オーバービュー

HTML5 & CSS3 & JavaScript

Page 8: TypeScript 1.0 オーバービュー

HTML5 & CSS3 & JavaScript

(function ($) {var offsetX = 20, offsetY = 20;$.widget('qs.infobox', {

options: {dataUrl: '', maxItems: 10

},_create: function () {

var that = this,name = this.name;},display: function (event, tagName) {

$.ajax({url: url,dataType: 'jsonp',success: function (data) {},

});},

});} (jQuery));

<div class="hoge" />

.hoge {color: red;background-color: #b6ff00;border-radius: 8px;

}

Page 9: TypeScript 1.0 オーバービュー

JavaScript is the Assembly Language of the Web.

by Scott Hanselman.

Page 10: TypeScript 1.0 オーバービュー

Problems of JavaScript

Page 11: TypeScript 1.0 オーバービュー

Large scale JavaScript development is hard.

Page 12: TypeScript 1.0 オーバービュー

TypeScriptAny browser. Any host. Any OS.

Open Source.

Page 13: TypeScript 1.0 オーバービュー
Page 14: TypeScript 1.0 オーバービュー

Any browser. Any host. Any OS. Open Source.

Page 15: TypeScript 1.0 オーバービュー
Page 16: TypeScript 1.0 オーバービュー

1. http://nodejs.org/

2.

3.

Compiler and Development Tool

※ TypeScriptコンパイラの実体

… AppData¥Roaming¥npm¥node_modules¥typescript¥bin¥tsc.js

Page 17: TypeScript 1.0 オーバービュー

TypeScript compilation process

TypeScriptファイル

(*.ts)

TypeScriptコンパイラ

(tsc.js)

JavaScriptファイル

(*.js)

TypeScript型定義ファイル

(*.d.ts)

JavaScript実行エンジン

(Browser, …)

Node.js または

WSH (WScript.Shell)で実行

ECMAScript 3 またはECMAScript 5 で生成

Web ブラウザーやNode.js など

Page 18: TypeScript 1.0 オーバービュー

Compiler Options オプション 機能

-d, --declaration 型定義ファイルを生成する

-h, --help ヘルプを表示する

--mapRoot LOCATION マップファイルの場所をデバッガーに指定する

-m KIND, --module KIND 外部モジュール生成の種類を指定する : KIND は commonjsまたは amd

--noImplicitAny 暗黙の any 型の使用を警告する

--out FILE 複数の .tsファイルを一つの .jsファイルとして出力する

--outDir DIRECTORY .jsファイルの出力先を指定する

--removeComments .ts内のコメントを .jsファイルに出力しない

--sourcemap ソースマップを生成する

--sourceRoot LOCATION .tsファイルの場所をデバッガーに指定する

-t VERSION, --target VERSION .jsファイルの ECMAScriptバージョンを指定する:ES3 (default) または ES5

-v, --version tscコンパイラバージョンを表示する

-w, --watch 指定したファイルを監視し、変更された時点で逐次コンパイルをおこなう

@<file> コマンドラインオプションを外部ファイルから読み込む

Page 19: TypeScript 1.0 オーバービュー

https://github.com/borisyankov/DefinitelyTyped

Typing for Libraries

Page 21: TypeScript 1.0 オーバービュー

Compiler and Development Tool

Page 22: TypeScript 1.0 オーバービュー

Official Web Sites

www.typescriptlang.org typescript.codeplex.com

クイック スタートサンプル

ソースコードドキュメント

Page 23: TypeScript 1.0 オーバービュー

ブラウザベースで手軽に体験

Page 24: TypeScript 1.0 オーバービュー
Page 25: TypeScript 1.0 オーバービュー

TypeScript Type System

interface I { }class C { }module M { }{ s: string; }number[]() => boolean

Page 26: TypeScript 1.0 オーバービュー

TypeScript Type System Example

// Anyvar 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);

}

// Numbervar x: number; // 明示的var y = 0; // y: number と同じvar z = 123.456; // z: number = 123.456 と同じ

// Booleanvar b: boolean; // 明示的var yes = true; // yes: boolean = true と同じvar no = false; // no: boolean = false と同じ

// Stringvar s: string; // 明示的var empty = ""; // empty: string = "" と同じvar abc = 'abc'; // abc: string = 'abc' と同じ

// Nullvar n: number = null; // 基本型は Null 設定可var x = null; // x: any = null と同じ

// Undefinedvar 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

Page 27: TypeScript 1.0 オーバービュー

TypeScript Classes and Modules

interface I { }class C { }module M { }{ s: string; }number[]() => boolean

Page 28: TypeScript 1.0 オーバービュー

TypeScript Interface, Classes Example

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!";}

}

var reo = new myDog();alert(reo.Talk());

Page 29: TypeScript 1.0 オーバービュー

TypeScript Module Example

module Sayings {var local = 2;

export class Greeter {...

}

}

var gt = new Sayings.Greeter();

// main.tsimport log = require("./log");

log.message("Hello");

// log.tsexport function = message(s: string) {

console.log(s);}

Page 30: TypeScript 1.0 オーバービュー

Generics : Parameterized Types

class Human<T> {constructor(public name: T) { }

Talk(): T { return this.name; }}

var me = new Human<string>("Akira");alert(me.Talk());

Page 31: TypeScript 1.0 オーバービュー

Arrow Function Expressions

var s1 = function (x: number) { return Math.sin(x); } // 標準式

var s2 = (x: number) => { return Math.sin(x); }var s3 = (x: number) => Math.sin(x)

var s4 = x => { return Math.sin(x); }var s5 = x => Math.sin(x)

var s0: (x: number) => number;s0 = x => Math.sin(x)

Page 32: TypeScript 1.0 オーバービュー

Get Accessor / Set Accessor

class Who {private _name: string;

get Name() { return this._name; }set Name(name: string) { this._name = name; }

}

var me = new Who();me.Name = "Akira Inoue";console.log(me.Name);

Page 33: TypeScript 1.0 オーバービュー
Page 34: TypeScript 1.0 オーバービュー

詳細

詳細

詳細

Unit Test for TypeScript

test("will add 5 to number", function () {var res: number = mathLib.add5(10);equal(res, 15, "should add 5");

});

Page 35: TypeScript 1.0 オーバービュー

TypeScript Debugging

Page 36: TypeScript 1.0 オーバービュー
Page 37: TypeScript 1.0 オーバービュー

Aligning with ECMAScript 6

Compiler and Language Improvements

Page 38: TypeScript 1.0 オーバービュー

JavaScript のスーパーセット

JavaScript にコンパイル

静的型付けの導入

多くの実行環境をサポート

オープンソース

Page 39: TypeScript 1.0 オーバービュー

TypeScriptA language for large scale JavaScript development.

Page 40: TypeScript 1.0 オーバービュー
Page 41: TypeScript 1.0 オーバービュー

TypeScript Books

著者 : わかめまさひろ 著者 : 川俣晶 著者 : 川俣晶

Page 42: TypeScript 1.0 オーバービュー

Typing for the jQuery

/// <reference path="jquery.d.ts" />...

Page 43: TypeScript 1.0 オーバービュー

http://www.typescriptlang.org/

http://typescript.codeplex.com/

http://go.microsoft.com/fwlink/?LinkId=267238

http://channel9.msdn.com/Events/Build/2014/3-576

https://groups.google.com/forum/#!forum/typescript-japan

https://www.facebook.com/groups/wTypeScript/

Resources

Page 44: TypeScript 1.0 オーバービュー