6/14に「第2回 Build Insider OFFLINE: TypeScriptスペシャル」に行ってきました。3回に分けてセミナーの内容を紹介します。
第2回 Build Insider OFFLINE: TypeScriptスペシャル - Build Insider
Build Insiderのオフライン・イベントが2014年6月14日(土曜日)に開催されます! 今年は、Web開発者に大人気(Build Insiderの調査で1位)の「TypeScript」がテーマです。 ...
今回は1回目です。最初のセッションは、日本マイクロソフト株式会社 井上 章さんの「TypeScript 1.0 オーバービュー」でした。
セッション内容
"JavaScript is the Assmbly Language of the Web."
- 重要だけど書くのは大変
TypeScript登場の背景
- 大規模開発に対してはJavaScriptは大変
- でもJavaScriptは必須
TypeScript
- JavaScriptの上位拡張
- JavaScriptのコードは、全てTypeScriptとして認識される
TypeScript開発環境
- TypeScriptコンパイラは以下の場所にある
C:\Program Files(x86)\Microsoft SDKs\TypeScript
TypeScriptプロジェクト作成のデモ
- Visual Studio 2013起動
- プロジェクトテンプレートで[TypeScriptを使用したHTMLアプリケーション]を選択
- プロジェクト構成
- app.css
- app.ts
- app.js
- app.js.map
- index.html
2画面表示(左側にTypeScript、右側に生成されたJavaScriptを表示)を実現するには?
- [拡張機能と更新プログラム]で「Web Essentials」を入れる
- [オプション]メニューに[Web Essentials]が追加される
- [TypeScript] - [Show preview pane]をTrueにする
Playgroundのデモ
Playground - Welcome to TypeScript
- TypeScript側にJavaScriptを書くと、JavaScript側にはそのまま出力される
- TypeScriptはJavaScriptの上位拡張だから
- Tips
- altを押しながら、クリックすると同時に2か所編集できる
言語仕様のデモ
- Interfaceを使ってClassを実装
interface Human { name: string; talk(): void; } class Talent implements Human { name: string; constructor(name: string) { this.name = name; } public talk() { alert(this.name + "です。"); } } window.onload = () => { var talent = new Talent("ふなっしー"); talent.talk(); // "ふなっしーです。"を表示 };
- 引数にInterfaceを導入
interface Human { name: FullName; talk(): void; } interface FullName { firstName: string; lastName: string; } class Talent implements Human { name: FullName; constructor(name: FullName) { this.name = name; } public talk() { alert(this.name.firstName + " " + this.name.lastName); } } window.onload = () => { var talent = new Talent({ firstName: "ふなっしー", lastName: "だなっしー" }); talent.talk(); // "ふなっしー だなっしー"を表示 };
- Classを継承
interface Human { name: FullName; talk(): void; } interface FullName { firstName: string; lastName: string; } class Talent implements Human { name: FullName; constructor(name: FullName) { this.name = name; } public talk() { alert(this.name.firstName + " " + this.name.lastName); } } class KaryyPamuPamu extends Talent { constructor() { super({ firstName: "きゃりー", lastName: "ぱみゅぱみゅ" }); } sing(): void { alert("ファッションモンスター"); } } window.onload = () => { var karry = new KaryyPamuPamu(); karry.talk(); // "きゃりー ぱみゅぱみゅ"を表示 karry.sing(); // "ファッションモンスター"を表示 };
- ClassをGenericsで実装
※記憶を頼りに書いているので若干違うかもしれません。
class Car<t> { constructor(public color: T) { } } enum Color1 { Green, Red, Blud }; enum Color2 { Yellow, White, Black }; window.onload = () => { var model1 = new Car<Color1>(Color1.Green); alert(model1.color); // 0を表示 var model2 = new Car<Color2>(Color2.White); alert(model2.color); // 1を表示 };
テスト・デバッグのデモ
- IEで実行
- 開発者ツールを起動
- デバッガーで.tsファイルが認識される
仕組み
- 開発者ツールの[ネットワーク]タブを選択
- この時点でクライアントにダウンロードされたものは
- app.css, app.js, app.js.map
- デバッグ実行すると、app.tsがダウンロードされる
- jsファイルの最後のコメント"//# sourceMappingURL=app.js.map"を参照している
- app.js.mapに"app.ts"が設定されている
設定
- [プロジェクトの設定] - [TypeScrptビルド] - [デバッグ] - [ソースマップを生成する]にチェック
参考書籍
TypeScriptリファレンス Ver.1.0対応 | ||||
|
JavaScriptプログラマのための 実践的TypeScript入門 | ||||
|
TypeScript入門 クラスと型チェック機能を加えたJavaScriptの拡張言語 | ||||
|
セッション資料と動画
TypeScriptセッションの全スライド&動画 - Build Insider
6/14に開催された第2回 Build Insider OFFLINEの3つのセッション「TypeScript 1.0 オーバービュー」「TypeScriptを実践的に使うために」「TypeScriptで効率化するHTML5のインタラクティブコンテンツの開発」のスライド&動画です。また、当日の連携イベントだった「TypeScript勉強会 - VSハッカソン倶楽部」の各スライドも掲載しています。 ...
関連エントリー
第2回
「第2回 Build Insider OFFLINE: TypeScriptスペシャル 」に行ってきた(その2「TypeScriptを実践的に使うために」by 沢渡 真雪さん) - プログラマーな日々
第3回
**第3回 「第2回 Build Insider OFFLINE: TypeScriptスペシャル 」に行ってきた(その3「TypeScriptで効率化するHTML5のインタラクティブコンテンツの開発」by 株式会社ICS代表 池田 泰延さん) - プログラマーな日々