SlideShare a Scribd company logo
TypeScriptは明日から使うべき 
MTI 技術の泉 
@vvakame
わかめ まさひろ 
GAE 
Android 
@v vakame 
TypeScript 
AngularJS
• Google App Engine! 
• Android! 
• Google Apps! 
などなど、! 
! 
! 
技術に特化した会社です。! 
Microsoft?
なぜ、TypeScriptか? 
どーして?
Type? 
• Type = 型! 
• 型は多くのプログラミング言語に存在! 
• “型”の扱いには言語ごとに優劣がある! 
• 静的型付け! 
• 動的型付け
静的型付け 
• 静的解析で多くの整合性検査が可能! 
• 不整合があったらコンパイルエラー! 
• int hoge = “Hoge”;! 
• ↑エラー!! 
• 大規模・大人数 になるほど利点⤴! 
• Java・C# などが有名
動的型付け 
• 型がないわけではないんだけども…! 
• 静的に検証しない(できない! 
• hoge = “Hi!” ; hoge = 1 ;! 
• 問題なし!(ある場合もある! 
• テストの重要性⤴ 大人数開発…⤵! 
• Ruby・Python などが有名
static vs dynamic 
一体、どっちがいいの?
Python 
http://goo.gl/9mcMSq 
静的な型チェック!
Ruby 
http://goo.gl/U0eYLQ Rubyよお前もか!
時代は静的型付けだ! 
• 動的型付けの利点は確かにある! 
• テスト書きやすい! 
• 黒魔術しやすい! 
• デメリットもある! 
• テストしっかり書かないと死ぬ! 
• リファクタリングめっちゃ怖い
王者 JavaScript 
• 昔はOFFにしとけとか言われてたのに! 
• 今や花形ですよ!! 
• JavaScript実行しない日があるだろうか! 
• いや、ない!
だがしかし… 
• しかしJavaScriptさんはマジガバガバ! 
• 動的型付けだしー! 
• そんな言語仕様でいいんですか…?! 
• クラス無い! 
• prototypeとかいうのはある(小声! 
• モジュール(パッケージ)無い! 
• 安全に開発できない!!!
そこでTypeScriptですよ 
• 静的型付けなJavaScript!! 
• クラスある!! 
• モジュールある! 
サイキョーやん?
TypeScriptの特長
TypeScriptの特長 
• TypeScriptはJavaScriptを拡張した言語! 
• 静的型付け!! 
• ECMAScript 6規格の文法を先取り☆! 
• 読みやすい変換後JavaScript! 
• Java, C# とかに優しい言語仕様! 
• 長いコンパイル時間 → 1.1.0 で改善 
最も現実的なaltJSだ!
親Microsoft情報 
• Microsoftが作ってる! 
• Visual Studio がサポートしている!! 
• C#作者が作ってる! 
でも僕はMacで使ってる
Why needs 型? 
• 多くのエラーをコンパイル時に! 
• 実行時エラーはもううんざり!! 
• 間違った使い方は不可能に! 
• リファクタリングも安心確実!! 
• コンパイルが通ればある程度動く!! 
• IDEなどのサポートが得られやすい 
JS完全互換!
TypeScriptでの型 
• primitive type 御三家! 
• number! 
• string! 
• boolean 
JS完全互換!
TypeScriptでの型 
• 忘れちゃならない! 
• any! 
• void 
JS完全互換!
TypeScriptでの型 
• class! 
• 実体も型も存在するイケメン! 
• interface! 
• 地味 型しか存在しない! 
• object type literal! 
• ↑TypeScriptリファレンス参照! 
• 雑に説明すると即席interface 
module君も一応いる
TypeScriptでの型 
• ECMAScriptにいるやつ! 
• DateとかArrayとかFunctionとか! 
• ブラウザにいるやつ! 
• windowとかDOM系のやつとか 
↑結局classかinterface
TypeScriptの基本構文 
TypeScriptチートシート 
http://goo.gl/QiXe8t
型注釈 
var str1: string = "string"; 
var str2: number = "string"; // エラー! 
var str3 = "string"; // 初期化子の型から型推論されstringを指定したのと等価 
str3 = 1; // エラー! 
! 
var b: boolean = true; 
var n: number = 1; 
! 
var a: any = true; 
a = 1; // any は何でもOK! 
http://goo.gl/jKVeHw
クラス 
http://goo.gl/l3zjBi 
class Hoge { 
name: string; 
constructor(name: string) { 
this.name = name; 
} 
hello(): string{ 
return "Hello, " + this.name; 
} 
} 
! 
var obj = new Hoge("world"); 
window.alert(obj.hello());
インタフェース 
http://goo.gl/GQD89G 
interface IHoge { 
str: string; 
num: number; 
} 
! 
var obj: IHoge = { 
str: "string", 
num: 1 
}; 
! 
window.alert(obj.str + obj.num);
内部モジュール 
http://goo.gl/gvjgTU 
module sample { 
export var str = "string"; 
export class Hoge { 
hello(word: string): string { 
return "Hello, " + word; 
} 
} 
} 
module sample2 { 
// SampleB.Hoge を Piyoとしてインポート 
import Piyo = sample.Hoge; 
export var str = new Piyo().hello("TypeScript"); 
} 
window.alert(sample2.str);
既存資産の活用 
今まで書いたJSも使える
TypeScript & JavaScript 
• JSのライブラリが使いたい!! 
• jQuery! 
• AngularJS! 
• mocha! 
• etc…! 
• お任せください! 
既存資産も使う!
DefinitelyTyped 
github.com/borisyankov/DefinitelyTyped 
definitely/déf(ə)nətli/ 
→define 
副詞more ~; most ~ 
2 明確に, はっきりと〈断る述べる決めるなど〉. 
type/taɪp/ 
〖語源は「打ってできた形型」〗 
(形)typical, (副)typically 
名詞複~s/-s/ 
1 C(ある特性を共有する)型, タイプ, 類型; 種類(kind2, sort) 
ウィズダム英和辞典より 
definitelytyped.org 
I’m committer!
型定義ファイル .d.ts 
Over 550!
既存JSに型を後付けする 
interface Moment { 
! 
format(format: string): string; 
format(): string; 
! 
fromNow(withoutSuffix?: boolean): string; 
! 
startOf(soort: string): Moment; 
endOf(soort: string): Moment; 
! 
add(input: MomentInput): Moment; 
add(soort: string, aantal: number): Moment; 
add(duration: Duration): Moment; 
subtract(input: MomentInput): Moment; 
subtract(soort: string, aantal: number): Moment; 
! 
calendar(): string; 
clone(): Moment; 
! 
valueOf(): number; 
! 
local(): Moment; // current date/time in local mode 
! 
utc(): Moment; // current date/time in UTC mode 
! 
isValid(): boolean; 
http://momentjs.com/ 
goo.gl/9QnuC3
完全網羅! 
TypeScriptリファレンス 
紙・電子共 好評発売中! 
Amazon(紙, Kindle) 
達人出版会(PDF)
mozaic.fm 
#5 TypeScript 
#8 AltJS in LL Diver 
2回くらい話した
実際の開発風景 
見学してみよう!
質問?

More Related Content

PDF
jQuery 対応ライブラリと TypeScript
PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
PPTX
TypeScriptをオススメする理由
PDF
3日時間をもらったのでTypeScriptを触ってみた
PDF
TypeScript 独習会
PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PDF
TypeScript 入門してみる
PDF
TypeScript超入門
jQuery 対応ライブラリと TypeScript
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScriptをオススメする理由
3日時間をもらったのでTypeScriptを触ってみた
TypeScript 独習会
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
TypeScript 入門してみる
TypeScript超入門

What's hot (19)

PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
PPTX
TypeScriptはいいぞ
PPTX
Typescriptの中のこと(浅め)
PDF
Visual Studioで始めるTypeScript開発入門
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PPTX
TypeScript 1.0 Released!
PDF
IDEALIZE YOU
PDF
WebStormでできること
PDF
LT駆動開発04 5分では分からないTypeScriptのなんとか
PDF
Type scriptのいいところ
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
PDF
nomlab_okayamaruby_subslide
PDF
JavaScript MVC入門
PDF
JavaScript 研修
PDF
continuatioN Linking
PDF
Nespのコード生成
PDF
TypeScript vs flow
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
PDF
Javascriptのあれやこれやをまとめて説明してみる
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
TypeScriptはいいぞ
Typescriptの中のこと(浅め)
Visual Studioで始めるTypeScript開発入門
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
TypeScript 1.0 Released!
IDEALIZE YOU
WebStormでできること
LT駆動開発04 5分では分からないTypeScriptのなんとか
Type scriptのいいところ
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
nomlab_okayamaruby_subslide
JavaScript MVC入門
JavaScript 研修
continuatioN Linking
Nespのコード生成
TypeScript vs flow
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Javascriptのあれやこれやをまとめて説明してみる
Ad

Viewers also liked (15)

PDF
Firefox OS勉強会 2nd TypeScript+AngularJS
PDF
15分でわかった気になるdart
PDF
TypeScript による今風の web アプリ開発
PPTX
JavaScript使いのためのTypeScript実践入門
PDF
TypeScript and Visual Studio Code
PPTX
Angular2実践入門
PDF
TypeScript 勉強会
PDF
20ヶ月を取り戻す Dart flight school
PDF
Google Glass XE17版
PDF
コンパイラ指向ReVIEW
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
GoCon2016 spring 自作Webフレームワーク uconを作った話
PPTX
TypeScriptについて
PDF
About dart
PDF
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
Firefox OS勉強会 2nd TypeScript+AngularJS
15分でわかった気になるdart
TypeScript による今風の web アプリ開発
JavaScript使いのためのTypeScript実践入門
TypeScript and Visual Studio Code
Angular2実践入門
TypeScript 勉強会
20ヶ月を取り戻す Dart flight school
Google Glass XE17版
コンパイラ指向ReVIEW
ng-japan 2015 TypeScript+AngularJS 1.3
GoCon2016 spring 自作Webフレームワーク uconを作った話
TypeScriptについて
About dart
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
Ad

Similar to TypeScriptは明日から使うべき (20)

PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
PDF
TypeScript & 関数型講座 第2回 TypeScript という言語
PDF
TypeScript 1.0 オーバービュー
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
PDF
TypeScript と Visual Studio Code
PDF
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
PDF
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
PDF
JSX / Haxe / TypeScript
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
PDF
TypeScript 言語処理系ことはじめ
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
PPTX
大人のお型付け
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
PDF
TypeScript0.9
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
PPT
ジェネリクスの基礎と応用 JJUG CCC 2012 Fall
PDF
TypeScript で型を上手く使う試み.pdf
PDF
TypeScript & 関数型講座 第1回 型の重要性
PDF
すごいH 第12章モノイド
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript 1.0 オーバービュー
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
TypeScript と Visual Studio Code
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
JSX / Haxe / TypeScript
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
TypeScript 言語処理系ことはじめ
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
AngularJS+TypeScript - AngularJS 1周年記念勉強会
大人のお型付け
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
TypeScript0.9
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
ジェネリクスの基礎と応用 JJUG CCC 2012 Fall
TypeScript で型を上手く使う試み.pdf
TypeScript & 関数型講座 第1回 型の重要性
すごいH 第12章モノイド

More from Masahiro Wakame (18)

PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
PDF
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
PDF
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
PDF
ReVIEW & CI - ChefでCI環境構築
PDF
俺とお前とGoogleware
PDF
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
PDF
TypeScript Hands-on
PDF
わかめモナ化LT
PDF
NFC app launcher
PDF
函館IKA Eclipse活用術
PDF
函館IKA ICS開発情報
PDF
JavaScript 再入門2
PDF
JavaScript再入門
PDF
デバッグ戦略
PDF
Eclipse活用術
PDF
Android操作大全
PDF
僕の考えるAPT開発の常識 ぐだ生 2011/04/09版
PDF
僕の考えるAPT開発の常識
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
ReVIEW & CI - ChefでCI環境構築
俺とお前とGoogleware
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
TypeScript Hands-on
わかめモナ化LT
NFC app launcher
函館IKA Eclipse活用術
函館IKA ICS開発情報
JavaScript 再入門2
JavaScript再入門
デバッグ戦略
Eclipse活用術
Android操作大全
僕の考えるAPT開発の常識 ぐだ生 2011/04/09版
僕の考えるAPT開発の常識

TypeScriptは明日から使うべき