SlideShare a Scribd company logo
TypeScript超入門
きよくら ならみ
2013/05/25
第五回 okayama-js勉強会
• ハンドル:「きよくら ならみ」
– @kiyokura
• 岡山生まれ岡山育ちのプログラマー
– 現在は県内の某製造業で社内SE
• NET系の開発やWebアプリ開発
– Microsoft MVP for ASP.NET/IIS
自己紹介
• Okayama IT Engineers Community
– 通称OITECの運営スタッフ
– 主にMS系のテクノロジを扱う勉強会などを、
岡山で開催しています
– site: oitec.vbstation.net
• オープンラボ岡山
– 今年から主宰を引き継ぎました
– 岡山でノンジャンルの技術系勉強会を開催
– site: olojp.net
コミュニティ
はじめに
はじめに
• このセッションの目的:
– TypeScriptを殆ど知らない・触ったことがない方へ、
TypeScriptがどんなものかを大まかにお伝えするも
のです
• 対象者:
– JavaScriptはある程度知っている
– TypeScriptをあまり知らないが…
これから始めてみたい
とりあえずざっくりしたところが知りたい
• そのため、細かい機能や注意点、また静的型付け
自体に関する言及等は極力割愛します
アジェンダ
• TypeScriptって何なの?
• 概要のブレイクダウン
• 試してみよう
• 言語としての特徴
• TypeScriptのロードマップ
• JavaScriptの未来
• まとめ
TypeScriptって何なの?
公式サイト
• www.TypeScriptLang.org
TypeScript
• TypeScript is a language for
application-scale JavaScript
development.
• TypeScript is a typed superset of
JavaScript that compiles to plain
JavaScript.
• Any browser. Any host. Any OS. Open
Source.
from “www.typescriptlang.org”
TypeScript
• JavaScriptによる大規模開発に対応する為
に設計された言語です
• JavaScriptのスーパーセットであり、”静
的型付け”が大きな特徴です
コンパイルによりJavaScriptを生成します
• 様々なブラウザや環境で動作します
そしてオープンソースです
超訳 by kiyokura
作ってるのは?
• Microsoftによるプロダクト
– でも、オープンソース
• 設計は Anders Hejlsberg
– Turbo Pascal / Delphi / C#
– 通称"ヘジたん"
from wikipedia
概要のブレイクダウン
application-scale
JavaScript development
• "アプリケーション規模"とは??
– 部分的な利用から
アプリケーション全体への拡大
• 見栄えの制御
• 簡単な入力値の検証
• アプリ全体の制御
• ビジネスロジック
JSの大規模開発で問題なりやすい点
• 動的型
• スコープ
– グローバル汚染
– ブロックスコープが無い
• 曖昧でもなんとなく動く
– 暗黙のセミコロン補完
• プロトタイプベース
– 独特で理解しにくい
JavaScriptのスーパーセット
• 基本構文はJavaScriptと(だいたい)同じ
– 学習コストが低い
– 既存のJavaScriptもそのまま使える場合も多
い
• ECMAScript 6thの仕様先取り
JavaScriptへコンパイル
• 最終的にJavaScriptへコンパイルされます
– *.tsファイルから*.jsファイルへ
• リーダブルなJavaScriptを出力
– 可読性が高く、人がメンテ可能
hoge.ts hoge.js
コンパイル
実行環境
• 実行環境=JavaScriptが動くところ
• ブラウザだけではない
– 例えば…
• Node.js
• Windows Scripting Host
オープンソース
• TypeScript is Open Source Software
– Apache License 2.0
• CodePlexでホスト
– typescript.codeplex.com
– VCSはgit
ここまでのまとめ
• TypeScriptは以下の特徴を持った言語
– JavaScriptのスーパーセット
– 大規模開発に耐えうる
– JavaScriptにコンパイルされる
– オープンソース
– tsの動作環境=jsの動作環境
試してみよう
TypeScriptの開発・実行環境
開発環境のつくり方
• 開発環境は無償で構築可能
– Visual Studio + アドオン
• Windows限定
• VSは無償版でOK
– node.jsで動くコンパイラ
• node.jsが動くOS=大体の主要OS
• コードはお好みのテキストエディタ
– 試すだけならブラウザ上で!
• 公式サイトのplay groundで試せます
• (nodeのコンパイラ利用時の)エディタ/IDEのサポート
– Sublime Text 2(*) / vim / emacs ...等々
– WebMatrix 3 / WebStrom(*)
*製品自体は有償
まずはここから
• 公式サイト(www.typescriptlang.org)
– Get TypeScript Now
Visual Studioの場合
• アドオンをインストール(VS2012用)
– 無償版も利用可能
• Visual Studio Express 2012 for Web
– http://www.microsoft.com/visualstudio/jpn/produc
ts/visual-studio-express-for-web
• msiをダウンロードして実行
それ以外の場合
• まずはnode.jsが動く環境を作る
• npmでインストール
• Windowsの場合、WebMatrixを利用する
とnode.jsごと簡単にインストール可能
– WebMatrix 3をインストール後、
– 拡張機能のTypeScript Compilerをインス
トール
npm install -g typescript
Play Ground
• 公式サイトのPlayから
• ブラウザ上でリアルタイムにコンパイル
– 実行も可能
– コード補完もかなり効く
コンパイルのデモ
• 簡単なコードとJavaScriptへのコンパイル
のデモ
コンパイルのデモ:VS
• Visual Studioの場合は自動的にコンパイ
ル
– 保存のタイミングでtsファイルの同名のjs
ファイルが自動作成される
– 有償版Visual Studioの場合は、無償のアドオ
ンでリアルタイムコンパイルも可能
• Web Essentials
コンパイルのデモ:node.js
• 以下のコマンドでコンパイル
• テキストエディタやIDEがサポートする
ケースも
tsc hoge.ts
コンパイル例
TypeScript JavaScript
ここまでのまとめ
• コンパイラ/開発環境は無償で入手可
• 大きく二種類
– Visual Studioアドオン(無償版VS対応)
– コマンドラインコンパイラ(node.js)
• IDEやテキストエディタでサポート有
言語仕様の概要
言語としての大まかな特徴
• 基本構文はJavaScript
• 静的型
• 型推論
• クラスベースのオブジェクト指向
• アロー関数式
基本構文はJavaScript
• 基本構文はJavaScriptとほぼ同じ
– 教育・学習コストが少ない
– 既存のjsもtsとしてコンパイル可能
• 書き方によってはエラーになることもある
• 後述する特徴を実現するための拡張
静的型付け
• 型注釈による型の宣言
– 変数 / 関数の引数 / 関数の戻り値
– ある型で宣言された変数に別の型は代入でき
ない
• コンパイルエラーが起こる
静的型付けの例
var name: string;
var age : number;
function sqrt(num: number): number {
return num * num;
}
name = "kiyokura";
age = 20;
// 以下はエラー
name = 20;
age = "hatachi";
var x = sqrt("hoge"); // 引数が文字列型
メリット・デメリット?
• 一般的な静的型付のメリットを参照
– ここでは割愛
• 『デメリット』といわれがちな点のフォロー
– 型の宣言が面倒
→ 型推論のサポート
– ダックタイピングしたい
→ InterfaceとStructural Subtyping
– 複数の方を受ける変数を使いたい
→ any型の採用
型推論
• 文脈から型が明らかな場合、
明示的な型注釈を省略可能
– 変数の初期化時
→ 代入される型が明らかな時
– 関数の戻値
→ 返却される値の型が明らかな時
var name = "kiyokura"; // 明らかにstring型
function sqrt(num: number) {
return num * num; // 明らかにnumber型
}
クラスベースのオブジェクト指向
• Class
– JavaやC#等のクラスに近い考えで実装可能
– 継承も可能
• Interface
– 特定の形のオブジェクトの別名
– JavaやC#等のInterface的な使い方も可
– Structural Subtypingのポイント
• Module
– 内部モジュール:NameSpace的に使う
– 外部モジュール:外部のファイルをロードする
Classの例
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): string{
return "Hello, I'm " +
this.name + ". I'm " +
this.age.toString() + "years old!";
}
}
Classの例(コンパイル後)
var Person = (function () {
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function () {
return "Hello, I'm " +
this.name + ". I'm " +
this.age.toString() + "years old!";
};
return Person;
})();
アロー関数式
• =>(アロー演算子)による
匿名関数の省略記法
– 関数型リテラルの省略記法
– いわゆるラムダ
// アロー関数式
var sqrt = (x:number) => { return x * x };
//これと等価(コンパイル後)
var sqrt = function (x) { return x * x; };
ここまでのまとめ
• 基本の構文はJavaScriptそのもの
• 型注釈による静的な型宣言
• 型推論による省略記述
• クラス指向オブジェクト言語的構文
• アロー関数式によるラムダ記法サポート
TypeScriptのロードマップ
ロードマップ
• 2013/05/24現在
– Current:0.8.3
• アドオンのバイナリやパッケージなどはこれ
– Alpha:0.9.0
• CodePlexからダウンロード可能
予定されているフィーチャー
• 0.9.0
– Generics
– Overload on constants
– Improve compiler performance
– Improvements to type system to help model a larger variety of
JS libraries
• 0.9.1
– Align with ECMAScript 6 modules
– Project integration support in VS plugin
• 1.x
– A handful of language features are scheduled for exploration
after the 1.0 release, including:
• Async/Await
• Mixins
• Protected access
– ES6-compatible codegen
今手を出さないほうが良いの?
• 考え方次第だと思うが…
• 私のスタンス
– とりあえずベターJavaScriptとして使っていいん
じゃない?
• 例:型安全なJavaScriptとしてだけ使うとか
• この使い方なら学習コストもゼロに近いのでは
– 吐かれるJavaScriptがリーダブルなので、最悪、
そっちをメンテする手もあるし
• どちらにしろベタでJavaScript書くことになるなら、
使い捨てのジェネレータ感覚で使っても損になるとこ
ろは無さげ
JavaScriptと未来
ある人曰く
JavaScript is
Assembly Language
for the Web
曰く
• JavaScript is Assembly Language for
the Web
• JavaScriptはWebのアセンブリ言語であ
る
 Scott Hanselman
 http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebS
ematicMarkupIsDeadCleanVsMachinecodedHTML.aspx
JavaScriptの
偉大な導師たち曰く
だいたい合ってる
JSの偉大なる導師たち
• "だいたい合ってる"
Mike Shave ,
Brendan Eich,
Douglas Crockford
http://www.hanselman.com/blog/JavaScriptisAssemblyL
anguagefortheWebPart2MadnessorjustInsanity.aspx
"JavaScript is Assembly Language"
• もう、そうなりつつあるのでは?
– TypeScript
– CoffeeScript
– HAXE
– Dart
– JSX
– Google Web Toolkit
– Script#
– (jQuery)
TypeScriptの目指しているところ(私見)
• general purpose
• 大規模開発にも耐えられる堅牢さ
• ベターJavaScript言語
• JavaScriptコンパイル言語界の
JavaやC#のポジション
...なんじゃないかな、と思っています
まとめ
TypeScriptとは
• ざっくり、こんな言語
• 手軽に試すこともできます
• 個人的には将来的にもっと大きな波にな
る予感がします
• 今のうちに触ってみることをお勧めした
いです
Let's try and enjoy
TypeScript !
参考
公式サイト
• http://www.TypeScriptLang.org
– チュートリアル
– play ground
– コンパイラ等のダウンロード
CodePlex
• http://typescript.codeplex.com
– ソース一式
• 各種サンプルも含まれている
– backboneのサンプル等もあった
– アルファ版のバイナリダウンロード
– issue トラッカー
ご清聴ありがとうございました

More Related Content

PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PPTX
TypeScriptをオススメする理由
PPTX
TypeScriptはいいぞ
PDF
Visual Studioで始めるTypeScript開発入門
PDF
3日時間をもらったのでTypeScriptを触ってみた
PDF
jQuery 対応ライブラリと TypeScript
PDF
TypeScriptは明日から使うべき
PPTX
Typescriptの中のこと(浅め)
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
TypeScriptをオススメする理由
TypeScriptはいいぞ
Visual Studioで始めるTypeScript開発入門
3日時間をもらったのでTypeScriptを触ってみた
jQuery 対応ライブラリと TypeScript
TypeScriptは明日から使うべき
Typescriptの中のこと(浅め)

What's hot (19)

PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
PDF
TypeScript 入門してみる
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PDF
TypeScript 独習会
PDF
continuatioN Linking
PDF
パターンでわかる! .NET Coreの非同期処理
PDF
IDEALIZE YOU
PDF
WebStormでできること
PDF
JavaScript 研修
PDF
Win32 APIをてなずけよう
PDF
JavaScript MVC入門
PDF
Nespのコード生成
PDF
C#でわかる こわくないMonad
PDF
大規模なJavaScript開発の話
PDF
Type scriptのいいところ
PDF
Async deepdive before de:code
PDF
Javascriptのあれやこれやをまとめて説明してみる
PDF
JavaScriptユーティリティライブラリの紹介
PDF
クライアントサイドjavascript簡単紹介
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 入門してみる
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
TypeScript 独習会
continuatioN Linking
パターンでわかる! .NET Coreの非同期処理
IDEALIZE YOU
WebStormでできること
JavaScript 研修
Win32 APIをてなずけよう
JavaScript MVC入門
Nespのコード生成
C#でわかる こわくないMonad
大規模なJavaScript開発の話
Type scriptのいいところ
Async deepdive before de:code
Javascriptのあれやこれやをまとめて説明してみる
JavaScriptユーティリティライブラリの紹介
クライアントサイドjavascript簡単紹介
Ad

Similar to TypeScript超入門 (20)

PDF
こわくないScala
PDF
Scala is-unscared
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
PDF
チケット管理システム大決戦第二弾
PDF
Scalaz-StreamによるFunctional Reactive Programming
PDF
とあるFlashの自動生成
PPTX
.NETのTuple応用チャレンジ WCFとC++/CLI
PPTX
JavaOne2014参加報告LT
PPTX
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
PDF
Scalaノススメ
PDF
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
PPTX
今さら聞けない人のためのDevOps超入門
PDF
Spring知っておきたい
PDF
Eclipse xtext 紹介
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
PDF
C#でもメタプログラミングがしたい!!
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
今さら聞けない人のためのDevOps超入門
こわくないScala
Scala is-unscared
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
チケット管理システム大決戦第二弾
Scalaz-StreamによるFunctional Reactive Programming
とあるFlashの自動生成
.NETのTuple応用チャレンジ WCFとC++/CLI
JavaOne2014参加報告LT
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ
Scalaノススメ
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
今さら聞けない人のためのDevOps超入門
Spring知っておきたい
Eclipse xtext 紹介
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
C#でもメタプログラミングがしたい!!
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
Ad

More from Narami Kiyokura (17)

PPTX
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
PDF
どうなる?Visual Studioの クライアントサイド web開発の今後
PDF
How do you like knockout?
PPTX
Windows ストアアプリを HTMLで作成する
PDF
ASP.NET "NOW" and "NEXT"
PDF
無償版Visual StudioでいろいろWeb開発
PDF
軽量ASP.NETフレームワークNancy
PDF
最近、リアルタイムWebが面白い
PDF
脱・Excelホーガンシのために、その1
PDF
最近のASP.NET事情2013Winter
PDF
軽量フレームワークNancy
PDF
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
PDF
よろしい、ならばMicro-ORMだ
PDF
WebMatrixで遊ぶ-ゆるふわGitHubページ
PDF
使ってみよう、WebMatrix3
PPTX
NuGetの社内利用のススメ
PDF
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介
SQL Server のプロジェクト指向オフライン データベース開発を採用してみた話
どうなる?Visual Studioの クライアントサイド web開発の今後
How do you like knockout?
Windows ストアアプリを HTMLで作成する
ASP.NET "NOW" and "NEXT"
無償版Visual StudioでいろいろWeb開発
軽量ASP.NETフレームワークNancy
最近、リアルタイムWebが面白い
脱・Excelホーガンシのために、その1
最近のASP.NET事情2013Winter
軽量フレームワークNancy
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
よろしい、ならばMicro-ORMだ
WebMatrixで遊ぶ-ゆるふわGitHubページ
使ってみよう、WebMatrix3
NuGetの社内利用のススメ
IMESupport for Sublime Text 2 / ConvertToUTF8の紹介

TypeScript超入門