Submit Search
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Jun 14, 2014
32 likes
12,816 views
Masahiro Wakame
http://vshtc.doorkeeper.jp/events/11407
Technology
Read more
1 of 56
Download now
Downloaded 42 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
More Related Content
What's hot
(19)
PDF
TypeScript超入門
Narami Kiyokura
PPTX
TypeScriptはいいぞ
Jun Suzuki
PPTX
Typescriptの中のこと(浅め)
Kazuhide Maruyama
PDF
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
PPTX
TypeScript 1.0 Released!
Horuchi Hiroki
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
PDF
IDEALIZE YOU
佑介 九岡
PDF
WebStormでできること
kamiyam .
PDF
LT駆動開発04 5分では分からないTypeScriptのなんとか
Kazuya Matsubara
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
civic Sasaki
PDF
continuatioN Linking
Kouji Matsui
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
PDF
JavaScript 研修
Yuki Ishikawa
PDF
Nespのコード生成
Kouji Matsui
PDF
Type scriptのいいところ
Kazuhide Maruyama
PPTX
2014 08-30 life with roslyn
shibuki
PDF
JavaScript MVC入門
大樹 小倉
PDF
TypeScript vs flow
takuronishida1
PDF
Win32 APIをてなずけよう
Kouji Matsui
TypeScript超入門
Narami Kiyokura
TypeScriptはいいぞ
Jun Suzuki
Typescriptの中のこと(浅め)
Kazuhide Maruyama
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
TypeScript 1.0 Released!
Horuchi Hiroki
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
IDEALIZE YOU
佑介 九岡
WebStormでできること
kamiyam .
LT駆動開発04 5分では分からないTypeScriptのなんとか
Kazuya Matsubara
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
civic Sasaki
continuatioN Linking
Kouji Matsui
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
JavaScript 研修
Yuki Ishikawa
Nespのコード生成
Kouji Matsui
Type scriptのいいところ
Kazuhide Maruyama
2014 08-30 life with roslyn
shibuki
JavaScript MVC入門
大樹 小倉
TypeScript vs flow
takuronishida1
Win32 APIをてなずけよう
Kouji Matsui
Viewers also liked
(13)
PDF
TypeScript And ALM
Kazushi Kamegawa
PDF
TypeScript 1.0 オーバービュー
Akira Inoue
PDF
15分でわかった気になるdart
Satoshi KOBAYASHI
PDF
TypeScript による今風の web アプリ開発
靖 陣内
PDF
Firefox OS勉強会 2nd TypeScript+AngularJS
Masahiro Wakame
PDF
TypeScript 勉強会
Masahiro Wakame
PDF
Google Glass XE17版
Masahiro Wakame
PDF
20ヶ月を取り戻す Dart flight school
Masahiro Wakame
PDF
コンパイラ指向ReVIEW
Masahiro Wakame
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PDF
GoCon2016 spring 自作Webフレームワーク uconを作った話
Masahiro Wakame
PDF
About dart
Naoto Higuchi
PPTX
TypeScriptについて
echigoya-jp
TypeScript And ALM
Kazushi Kamegawa
TypeScript 1.0 オーバービュー
Akira Inoue
15分でわかった気になるdart
Satoshi KOBAYASHI
TypeScript による今風の web アプリ開発
靖 陣内
Firefox OS勉強会 2nd TypeScript+AngularJS
Masahiro Wakame
TypeScript 勉強会
Masahiro Wakame
Google Glass XE17版
Masahiro Wakame
20ヶ月を取り戻す Dart flight school
Masahiro Wakame
コンパイラ指向ReVIEW
Masahiro Wakame
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
GoCon2016 spring 自作Webフレームワーク uconを作った話
Masahiro Wakame
About dart
Naoto Higuchi
TypeScriptについて
echigoya-jp
Ad
Similar to TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
(20)
PPTX
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
慎一 古賀
PDF
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
PDF
TypeScript で型を上手く使う試み.pdf
Ryo Higashigawa
PPTX
メンテナブルなJsってなんだろう
Daiki Matsumoto
PDF
趣味プログラマの先輩からのアドバイス
Hiroaki Murayama
PDF
PFPファシグラ(2009/07/03)
nishikawa_makoto7
PPTX
TypeScriptで作る型安全FirefoxOSアプリ
progre
PDF
プログラミング同好会とすごい合同勉強会
nemumu
PDF
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
PDF
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
ODP
HTML5 アプリ開発
tomo_masakura
PPTX
VPSやめてHerokuに移行したお話
Hiroyuki Hayashi
PDF
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
nishio
PDF
プレゼンテーション 7
Kato Tomo
KEY
SnapDishの事例
Fumikazu Kiyota
PPT
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
PDF
⑮jQueryをおぼえよう!その1
Nishida Kansuke
PDF
a-blogcsm な寺子屋 2 in Okazaki
Etsushi Ishii
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
PPTX
プログラマが欲しい仕様書とは
Katsutoshi Makino
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
慎一 古賀
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
TypeScript で型を上手く使う試み.pdf
Ryo Higashigawa
メンテナブルなJsってなんだろう
Daiki Matsumoto
趣味プログラマの先輩からのアドバイス
Hiroaki Murayama
PFPファシグラ(2009/07/03)
nishikawa_makoto7
TypeScriptで作る型安全FirefoxOSアプリ
progre
プログラミング同好会とすごい合同勉強会
nemumu
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
HTML5 アプリ開発
tomo_masakura
VPSやめてHerokuに移行したお話
Hiroyuki Hayashi
アイデアを塩漬けにしない-世界中の人に手伝ってもらう方法-
nishio
プレゼンテーション 7
Kato Tomo
SnapDishの事例
Fumikazu Kiyota
バイラルメディアを作ったら3万いいね集まった!
Kato Tomo
⑮jQueryをおぼえよう!その1
Nishida Kansuke
a-blogcsm な寺子屋 2 in Okazaki
Etsushi Ishii
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
プログラマが欲しい仕様書とは
Katsutoshi Makino
Ad
More from Masahiro Wakame
(20)
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
PDF
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Masahiro Wakame
PDF
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
Masahiro Wakame
PDF
ReVIEW & CI - ChefでCI環境構築
Masahiro Wakame
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
PDF
俺とお前とGoogleware
Masahiro Wakame
PDF
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Masahiro Wakame
PDF
TypeScript Hands-on
Masahiro Wakame
PDF
わかめモナ化LT
Masahiro Wakame
PDF
NFC app launcher
Masahiro Wakame
PDF
函館IKA Eclipse活用術
Masahiro Wakame
PDF
函館IKA ICS開発情報
Masahiro Wakame
PDF
JavaScript 再入門2
Masahiro Wakame
PDF
JavaScript再入門
Masahiro Wakame
PDF
デバッグ戦略
Masahiro Wakame
PDF
Eclipse活用術
Masahiro Wakame
PDF
Android操作大全
Masahiro Wakame
PDF
僕の考えるAPT開発の常識 ぐだ生 2011/04/09版
Masahiro Wakame
PDF
僕の考えるAPT開発の常識
Masahiro Wakame
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Masahiro Wakame
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
Masahiro Wakame
ReVIEW & CI - ChefでCI環境構築
Masahiro Wakame
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
俺とお前とGoogleware
Masahiro Wakame
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Masahiro Wakame
TypeScript Hands-on
Masahiro Wakame
わかめモナ化LT
Masahiro Wakame
NFC app launcher
Masahiro Wakame
函館IKA Eclipse活用術
Masahiro Wakame
函館IKA ICS開発情報
Masahiro Wakame
JavaScript 再入門2
Masahiro Wakame
JavaScript再入門
Masahiro Wakame
デバッグ戦略
Masahiro Wakame
Eclipse活用術
Masahiro Wakame
Android操作大全
Masahiro Wakame
僕の考えるAPT開発の常識 ぐだ生 2011/04/09版
Masahiro Wakame
僕の考えるAPT開発の常識
Masahiro Wakame
Recently uploaded
(9)
PPTX
色について.pptx .
iPride Co., Ltd.
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
色について.pptx .
iPride Co., Ltd.
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
1.
型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部 @vvakame
2.
わかめ まさひろ GAE Android TypeScript AngularJS @vvakame
3.
• Google App
Engine! • Android! • Google Apps! などなど、! ! ! 技術に特化した会社です。! Microsoft?
4.
宣伝 TypeScriptリファレンス 紙・電子共 好評発売中! Amazon(紙, Kindle) 達人出版会(PDF)
5.
おさらい:TypeScriptの特長 TypeScriptチートシート goo.gl/QiXe8t
6.
TypeScriptの特長 • TypeScriptはJavaScriptを拡張した言語! • 静的型付け!! •
ECMAScript 6規格の文法を先取り☆! • 読みやすい変換後JavaScript! • Java, C# とかに優しい言語仕様! • 長いコンパイル時間 最も現実的なaltJSだ!
7.
TypeScriptといえば…
8.
静的型付 0 12.5 25 37.5 50 人数 型は必要 型は不要 型は必要! 出典:民明書房 -
激烈!天下一altJS武闘会 - より
9.
Why needs 型? •
多くのエラーをコンパイル時に! • 実行時エラーはもううんざり!! • 間違った使い方は不可能に! • リファクタリングも安心確実!! • コンパイルが通ればある程度動く!! • IDEなどのサポートが得られやすい JS完全互換!
10.
TypeScriptでの型 • primitive type
御三家! • number! • string! • boolean JS完全互換!
11.
TypeScriptでの型 • 忘れちゃならない! • any! •
void JS完全互換!
12.
TypeScriptでの型 • class! • 実体も型も存在するイケメン! •
interface! • 地味 型しか存在しない! • object type literal! • ↑TypeScriptリファレンス参照! • 雑に説明すると即興interface module君も一応いる
13.
TypeScriptでの型 • ECMAScriptにいるやつ! • DateとかArrayとかFunctionとか! •
ブラウザにいるやつ! • windowとかDOM系のやつとか ↑結局classかinterface
14.
TypeScript & JavaScript •
JSのライブラリが使いたい!! • jQuery! • AngularJS! • mocha! • etc…! • お任せください! @Neri78さんの 解説を思い出そう!
15.
DefinitelyTyped definitely/déf(ə)nətli/ →define 副詞more ∼; most
∼ 2 明確に, はっきりと〈断る述べる決めるなど〉. type/ta p/ 語源は「打ってできた形型」 (形)typical, (副)typically 名詞複∼s/-s/ 1 C(ある特性を共有する)型, タイプ, 類型; 種類(kind2, sort) ウィズダム英和辞典より I’m committer! definitelytyped.org github.com/borisyankov/DefinitelyTyped
16.
型定義ファイル .d.ts Over 450!
17.
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
18.
型定義ファイルの探し方
19.
DefinitelyTypedで探す • github.com/borisyankov/DefinitelyTyped! • GitHub! •
t キーで頑張る! • tsd! • definitelytyped.org/tsd/! • NuGet! • www.nuget.org/packages? q=DefinitelyTyped
20.
世界貢献!
21.
.d.ts 利用例 • FunScript! •
F# to JavaScript! • Scala.js! • scala.js ts importer! • dts-parser! • TypedCoffeeScript by mizchi
22.
in Pure JavaScript •
WebStorm (JetBrains社のIDE)! • 通常のJSコード書きにも使える!! • JavaScript > Libraries > Download > TypeScript community stubs
23.
.d.ts = 大統一型定義ファイル •つよい!! •すごい!! •やばい!
24.
是非 • TypeScript固有の事情が入るよね! • WebIDLとか使ったほうがよくね?! •
しかし、多くの人は今すぐ使いたい! • DefinitelyTyped、450もあるらしっすよ! • ↑大正義 より良い解が見つかるといいな
25.
まとめ ↓ JavaScriptより強い安全性を求め! ↓ 静的型チェックのない世界殺すマン! ↓
しかし既存JS資産は活用したい…! ↓ 型定義ファイル、必要です!! ↓ それ、DefinitelyTypedにあるよ
26.
.d.ts 作る?
27.
Pros/Cons • Pros! • ライブラリへの理解が深まる! •
後の安心が手に入る! • Cons! • 作業前工数が膨れ上がる! • 書き方を学習するのが大変 みんなはどう思うかな?
28.
Pros/Cons • Pros! • ライブラリへの理解が深まる! •
後の安心が手に入る! • Cons! • 作業前工数が膨れ上がる! • 書き方を学習するのが大変
29.
作業工数? 弊社 No.2 TypeScripter Grapswizさんの感想
30.
作業工数? • ぶっちゃけ趣味プログラミング中では マジであります。! • 仕事の場合は最低限使える範囲を パパっとやって、終わりっ!! •
型定義貯金! • キッチリやると後々デバッグ時間の 削減という形で還元されてくる
31.
書き方の学習 • 基本はTypeScriptを踏襲! • トップレベルには
declare をつける! • 実装を書けないことに留意! • モジュールの書き方! • 内部モジュール! • 外部モジュール TypeScript 難易度の頂
32.
.d.ts 作る!!
33.
How to write
.d.ts? • 普通にライブラリ使う時と変わらない! • APIリファレンスを読む! • 実装を読む! • 実行してみて確かめる 時間余ったら実演します
34.
やってはいけない! • 無駄に凝る てきとーにやろ
35.
結論 • コンパイルが通ればいいんだよ! ただし—noImplicitAny 非対応はギルティ
36.
向き・不向き • TypeScriptに不向きなライブラリもある! • 独自のOOPの仕組みを持つもの! •
データ入れるとクラスが返るやつ! • 主にDBのORマッパが多い! • Sequelizeの例 ⃝⃝言語にある☓☓があれば解決するのに… という悩み、結構ある
37.
避けないほうがいい知識 • 内部・外部モジュール! • TypeScriptリファレンス参照! •
teppeisさんのBlog参照! • www.typescriptlang.org/Handbook! • 誰か許可とって翻訳してください><! • Class Decomposition が特に重要
38.
anyを使う • とりあえずコンパイル通る!! • A.
まずany、後から詳細化していく! 作れる = 正義!
39.
anyを使う • とりあえずコンパイル通る!! • A.
まずany、後から詳細化していく! • B. 利用側コードに必要なとこ作る PRはBの方が送りやすい declare var $: any; ←流石にコレは困る
40.
new operator • new
演算子を使う対象! • class! • interface (class decomposition)! • 具体例! • goo.gl/qD60Vi interfaceが主流?
41.
new operator • 何故クラスを分解するのか?! •
interfaceは後付で拡張できる! • だいたいJavaScriptのせい! • Aライブラリを勝手に拡張する Bライブラリ! • ↑interfaceじゃないと対応できない
42.
new operator • interfaceの利点! •
別ライブラリの拡張に耐える!! • 具体例 goo.gl/nHMTqu! • interfaceの欠点! • 継承できない!! • 具体例 goo.gl/QOO8yl 用途を考え classの利用を検討
43.
命名規則 • JSの流儀に従う! • クラス名は先頭大文字
Sample! • モジュール名もかな…! • 変数、メソッド キャメルケース fooBar! • インタフェースは先頭I付き ISample! • ↑賛否両論 ちょとおすすめ ぐらい C#erはメソッド先頭大文字多いですね それはどうかと思うけど…
44.
オブジェクト型リテラル • キッチリ理解すると柔軟な表現が可能! • これだけで1時間話せるレベル! •
TSチートシート goo.gl/QiXe8t! • TSリファレンス goo.gl/G9gzeu
45.
非インスタンス化モジュール • 型定義を作る時の便利なテクニック!! • 具体例
goo.gl/xVNmYD! • わかめの後悔! • non instantiated module! • 非インスタンス化モジュールと訳した! • 幽霊モジュール goo.gl/vlQGUF! • ↑わかりやすい… DTコミッタ @basarat 命名
46.
関数とモジュールの定義統合 • 具体例 goo.gl/F7tvg6! •
なんでこんなことできるの?! • JavaScriptでできるから(たぶん
47.
オーバーロード • any, Function,
…args: any[] からの脱皮! • より優れたコンパイル時エラー検出! • 様々な引数に対応する! • 文字列リテラルによる特殊化! • 引数によって異なる型を返す
48.
pull requestを送ろう!
49.
作ったものは共有しよう • 他の人が楽できるぞ!! • 自分が楽できるのも誰かのおかげ!! •
誰かが完成させてくれるかも?! • 誰かがバグ直してくれるかも? 主に下2つが重要
50.
pull request? • GitHubにはpull
requestがある! • PRと略されることも! • fork→commit→push→PR!! • GitHub実践入門が良書らしい PR童貞が許されるのは高校生までだよね∼w
51.
具体的に • Qiitaに解説記事書いた! • DefinitelyTyped公式解説もある! •
コミッタに日本人がいる→! • ↑当然日本語が喋れる! • ちなみに英語は不自由
52.
ん? • もし、あなたがPR未経験なら…! • DefinitelyTypedにPRを出そう!! •
たくさんの型定義の集合! • 全体を把握しなくても追加できる!! • 1文字だけの修正のPRも大歓迎!
53.
Live Writing 自分用メモ antigen theme
imajes ⌘ Shift + ⌘ Shift 0
54.
• 適当なライブラリを調べて書く! • Bacon.js
良さそう! • その場で選んでもらう? どっちにしよ? 3分で決めよう!
55.
かもん!しつもん!
56.
だいたい全部書いてある 1時間で喋りきれない事 多すぎんよ∼ww Amazon(紙, Kindle) 達人出版会(PDF)
Download