Movatterモバイル変換


[0]ホーム

URL:


Masahiro Wakame, profile picture
Uploaded byMasahiro Wakame
PDF, PPTX12,838 views

TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部

http://vshtc.doorkeeper.jp/events/11407

Embed presentation

Download as PDF, PPTX
型定義ファイルのある開発TypeScript勉強会 VSハッカソン倶楽部@vvakame
わかめ まさひろGAEAndroidTypeScriptAngularJS@vvakame
• Google App Engine!• Android!• Google Apps!などなど、!!!技術に特化した会社です。!Microsoft?
宣伝TypeScriptリファレンス紙・電子共 好評発売中!Amazon(紙, Kindle)達人出版会(PDF)
おさらい:TypeScriptの特長TypeScriptチートシートgoo.gl/QiXe8t
TypeScriptの特長• TypeScriptはJavaScriptを拡張した言語!• 静的型付け!!• ECMAScript 6規格の文法を先取り☆!• 読みやすい変換後JavaScript!• Java, C# とかに優しい言語仕様!• 長いコンパイル時間最も現実的なaltJSだ!
TypeScriptといえば…
静的型付012.52537.550人数型は必要 型は不要型は必要!出典:民明書房 - 激烈!天下一altJS武闘会 - より
Why needs 型?• 多くのエラーをコンパイル時に!• 実行時エラーはもううんざり!!• 間違った使い方は不可能に!• リファクタリングも安心確実!!• コンパイルが通ればある程度動く!!• IDEなどのサポートが得られやすいJS完全互換!
TypeScriptでの型• primitive type 御三家!• number!• string!• booleanJS完全互換!
TypeScriptでの型• 忘れちゃならない!• any!• voidJS完全互換!
TypeScriptでの型• class!• 実体も型も存在するイケメン!• interface!• 地味 型しか存在しない!• object type literal!• ↑TypeScriptリファレンス参照!• 雑に説明すると即興interfacemodule君も一応いる
TypeScriptでの型• ECMAScriptにいるやつ!• DateとかArrayとかFunctionとか!• ブラウザにいるやつ!• windowとかDOM系のやつとか↑結局classかinterface
TypeScript & JavaScript• JSのライブラリが使いたい!!• jQuery!• AngularJS!• mocha!• etc…!• お任せください!@Neri78さんの解説を思い出そう!
DefinitelyTypeddefinitely/déf(ə)nətli/→define副詞more ∼; most ∼2 明確に, はっきりと〈断る述べる決めるなど〉.type/ta p/語源は「打ってできた形型」(形)typical, (副)typically名詞複∼s/-s/1 C(ある特性を共有する)型, タイプ, 類型; 種類(kind2, sort)ウィズダム英和辞典よりI’m committer!definitelytyped.orggithub.com/borisyankov/DefinitelyTyped
型定義ファイル .d.tsOver 450!
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!既存JSに型を後付けするhttp://momentjs.com/goo.gl/9QnuC3
型定義ファイルの探し方
DefinitelyTypedで探す• github.com/borisyankov/DefinitelyTyped!• GitHub!• t キーで頑張る!• tsd!• definitelytyped.org/tsd/!• NuGet!• www.nuget.org/packages?q=DefinitelyTyped
世界貢献!
.d.ts 利用例• FunScript!• F# to JavaScript!• Scala.js!• scala.js ts importer!• dts-parser!• TypedCoffeeScript by mizchi
in Pure JavaScript• WebStorm (JetBrains社のIDE)!• 通常のJSコード書きにも使える!!• JavaScript > Libraries > Download > 
TypeScript community stubs
.d.ts = 大統一型定義ファイル•つよい!!•すごい!!•やばい!
是非• TypeScript固有の事情が入るよね!• WebIDLとか使ったほうがよくね?!• しかし、多くの人は今すぐ使いたい!• DefinitelyTyped、450もあるらしっすよ!• ↑大正義より良い解が見つかるといいな
まとめ↓ JavaScriptより強い安全性を求め!↓ 静的型チェックのない世界殺すマン!↓ しかし既存JS資産は活用したい…!↓ 型定義ファイル、必要です!!↓ それ、DefinitelyTypedにあるよ
.d.ts 作る?
Pros/Cons• Pros!• ライブラリへの理解が深まる!• 後の安心が手に入る!• Cons!• 作業前工数が膨れ上がる!• 書き方を学習するのが大変みんなはどう思うかな?
Pros/Cons• Pros!• ライブラリへの理解が深まる!• 後の安心が手に入る!• Cons!• 作業前工数が膨れ上がる!• 書き方を学習するのが大変
作業工数?弊社 No.2 TypeScripterGrapswizさんの感想
作業工数?• ぶっちゃけ趣味プログラミング中ではマジであります。!• 仕事の場合は最低限使える範囲を
パパっとやって、終わりっ!!• 型定義貯金!• キッチリやると後々デバッグ時間の
削減という形で還元されてくる
書き方の学習• 基本はTypeScriptを踏襲!• トップレベルには declare をつける!• 実装を書けないことに留意!• モジュールの書き方!• 内部モジュール!• 外部モジュールTypeScript難易度の頂
.d.ts 作る!!
How to write .d.ts?• 普通にライブラリ使う時と変わらない!• APIリファレンスを読む!• 実装を読む!• 実行してみて確かめる時間余ったら実演します
やってはいけない!• 無駄に凝るてきとーにやろ
結論• コンパイルが通ればいいんだよ!ただし—noImplicitAny非対応はギルティ
向き・不向き• TypeScriptに不向きなライブラリもある!• 独自のOOPの仕組みを持つもの!• データ入れるとクラスが返るやつ!• 主にDBのORマッパが多い!• Sequelizeの例⃝⃝言語にある☓☓があれば解決するのに…という悩み、結構ある
避けないほうがいい知識• 内部・外部モジュール!• TypeScriptリファレンス参照!• teppeisさんのBlog参照!• www.typescriptlang.org/Handbook!• 誰か許可とって翻訳してください><!• Class Decomposition が特に重要
anyを使う• とりあえずコンパイル通る!!• A. まずany、後から詳細化していく!作れる = 正義!
anyを使う• とりあえずコンパイル通る!!• A. まずany、後から詳細化していく!• B. 利用側コードに必要なとこ作るPRはBの方が送りやすいdeclare var $: any; ←流石にコレは困る
new operator• new 演算子を使う対象!• class!• interface (class decomposition)!• 具体例!• goo.gl/qD60Viinterfaceが主流?
new operator• 何故クラスを分解するのか?!• interfaceは後付で拡張できる!• だいたいJavaScriptのせい!• Aライブラリを勝手に拡張する
Bライブラリ!• ↑interfaceじゃないと対応できない
new operator• interfaceの利点!• 別ライブラリの拡張に耐える!!• 具体例 goo.gl/nHMTqu!• interfaceの欠点!• 継承できない!!• 具体例 goo.gl/QOO8yl用途を考えclassの利用を検討
命名規則• JSの流儀に従う!• クラス名は先頭大文字 Sample!• モジュール名もかな…!• 変数、メソッド キャメルケース fooBar!• インタフェースは先頭I付き ISample!• ↑賛否両論 ちょとおすすめ ぐらいC#erはメソッド先頭大文字多いですねそれはどうかと思うけど…
オブジェクト型リテラル• キッチリ理解すると柔軟な表現が可能!• これだけで1時間話せるレベル!• TSチートシート goo.gl/QiXe8t!• TSリファレンス goo.gl/G9gzeu
非インスタンス化モジュール• 型定義を作る時の便利なテクニック!!• 具体例 goo.gl/xVNmYD!• わかめの後悔!• non instantiated module!• 非インスタンス化モジュールと訳した!• 幽霊モジュール goo.gl/vlQGUF!• ↑わかりやすい… DTコミッタ@basarat 命名
関数とモジュールの定義統合• 具体例 goo.gl/F7tvg6!• なんでこんなことできるの?!• JavaScriptでできるから(たぶん
オーバーロード• any, Function, …args: any[] からの脱皮!• より優れたコンパイル時エラー検出!• 様々な引数に対応する!• 文字列リテラルによる特殊化!• 引数によって異なる型を返す
pull requestを送ろう!
作ったものは共有しよう• 他の人が楽できるぞ!!• 自分が楽できるのも誰かのおかげ!!• 誰かが完成させてくれるかも?!• 誰かがバグ直してくれるかも?主に下2つが重要
pull request?• GitHubにはpull requestがある!• PRと略されることも!• fork→commit→push→PR!!• GitHub実践入門が良書らしいPR童貞が許されるのは高校生までだよね∼w
具体的に• Qiitaに解説記事書いた!• DefinitelyTyped公式解説もある!• コミッタに日本人がいる→!• ↑当然日本語が喋れる!• ちなみに英語は不自由
ん?• もし、あなたがPR未経験なら…!• DefinitelyTypedにPRを出そう!!• たくさんの型定義の集合!• 全体を把握しなくても追加できる!!• 1文字だけの修正のPRも大歓迎!
Live Writing自分用メモantigen theme imajes⌘ Shift +⌘ Shift 0
• 適当なライブラリを調べて書く!• Bacon.js 良さそう!• その場で選んでもらう?どっちにしよ?3分で決めよう!
かもん!しつもん!
だいたい全部書いてある1時間で喋りきれない事多すぎんよ∼wwAmazon(紙, Kindle)達人出版会(PDF)

Recommended

PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PPTX
TypeScriptをオススメする理由
PDF
3日時間をもらったのでTypeScriptを触ってみた
PDF
TypeScript 独習会
PDF
TypeScriptは明日から使うべき
PDF
TypeScript 入門してみる
PDF
jQuery 対応ライブラリと TypeScript
PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
PDF
JavaScript 研修
PDF
Visual Studioで始めるTypeScript開発入門
PDF
TypeScript超入門
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
PDF
Win32 APIをてなずけよう
PDF
JavaScript MVC入門
PDF
LT駆動開発04 5分では分からないTypeScriptのなんとか
PPTX
TypeScript 1.0 Released!
PDF
Type scriptのいいところ
PDF
TypeScript vs flow
PDF
Nespのコード生成
PPTX
TypeScriptはいいぞ
PPTX
2014 08-30 life with roslyn
PDF
IDEALIZE YOU
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PDF
WebStormでできること
PDF
continuatioN Linking
PPTX
Typescriptの中のこと(浅め)
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
TypeScript 勉強会
PPTX
TypeScriptについて

More Related Content

PDF
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PPTX
TypeScriptをオススメする理由
PDF
3日時間をもらったのでTypeScriptを触ってみた
PDF
TypeScript 独習会
PDF
TypeScriptは明日から使うべき
PDF
TypeScript 入門してみる
PDF
jQuery 対応ライブラリと TypeScript
PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
TypeScriptをオススメする理由
3日時間をもらったのでTypeScriptを触ってみた
TypeScript 独習会
TypeScriptは明日から使うべき
TypeScript 入門してみる
jQuery 対応ライブラリと TypeScript
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK

What's hot

PDF
JavaScript 研修
PDF
Visual Studioで始めるTypeScript開発入門
PDF
TypeScript超入門
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
PDF
Win32 APIをてなずけよう
PDF
JavaScript MVC入門
PDF
LT駆動開発04 5分では分からないTypeScriptのなんとか
PPTX
TypeScript 1.0 Released!
PDF
Type scriptのいいところ
PDF
TypeScript vs flow
PDF
Nespのコード生成
PPTX
TypeScriptはいいぞ
PPTX
2014 08-30 life with roslyn
PDF
IDEALIZE YOU
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PDF
WebStormでできること
PDF
continuatioN Linking
PPTX
Typescriptの中のこと(浅め)
JavaScript 研修
Visual Studioで始めるTypeScript開発入門
TypeScript超入門
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Win32 APIをてなずけよう
JavaScript MVC入門
LT駆動開発04 5分では分からないTypeScriptのなんとか
TypeScript 1.0 Released!
Type scriptのいいところ
TypeScript vs flow
Nespのコード生成
TypeScriptはいいぞ
2014 08-30 life with roslyn
IDEALIZE YOU
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
WebStormでできること
continuatioN Linking
Typescriptの中のこと(浅め)

Viewers also liked

PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
TypeScript 勉強会
PPTX
TypeScriptについて
PDF
TypeScript And ALM
PDF
15分でわかった気になるdart
PDF
GoCon2016 spring 自作Webフレームワーク uconを作った話
PDF
コンパイラ指向ReVIEW
PDF
Google Glass XE17版
PDF
Firefox OS勉強会 2nd TypeScript+AngularJS
PDF
TypeScript による今風の web アプリ開発
PDF
About dart
PDF
TypeScript 1.0 オーバービュー
PDF
20ヶ月を取り戻す Dart flight school
ng-japan 2015 TypeScript+AngularJS 1.3
TypeScript 勉強会
TypeScriptについて
TypeScript And ALM
15分でわかった気になるdart
GoCon2016 spring 自作Webフレームワーク uconを作った話
コンパイラ指向ReVIEW
Google Glass XE17版
Firefox OS勉強会 2nd TypeScript+AngularJS
TypeScript による今風の web アプリ開発
About dart
TypeScript 1.0 オーバービュー
20ヶ月を取り戻す Dart flight school

Similar to TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部

PPTX
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
PDF
TypeScriptへの入口
PPTX
JavaScript使いのためのTypeScript実践入門
PDF
小規模チームで Type script と向き合う話
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
PDF
TypeScript 言語処理系ことはじめ
PDF
TypeScriptの型定義をPRする技術 (ypresto / kansai.ts #2)
PDF
JSX / Haxe / TypeScript
PDF
TypeScript & 関数型講座 第2回 TypeScript という言語
PDF
DefinitelyTyped良いという話
 
PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
PDF
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
PDF
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
PDF
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
PDF
TypeScript と Visual Studio Code
PDF
TypeScript0.9
PDF
TypeScript & 関数型講座 第1回 型の重要性
PPTX
大人のお型付け
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
TypeScriptへの入口
JavaScript使いのためのTypeScript実践入門
小規模チームで Type script と向き合う話
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
TypeScript 言語処理系ことはじめ
TypeScriptの型定義をPRする技術 (ypresto / kansai.ts #2)
JSX / Haxe / TypeScript
TypeScript & 関数型講座 第2回 TypeScript という言語
DefinitelyTyped良いという話
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript と Visual Studio Code
TypeScript0.9
TypeScript & 関数型講座 第1回 型の重要性
大人のお型付け

More from Masahiro Wakame

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

TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部


[8]ページ先頭

©2009-2025 Movatter.jp