Skip to content

Instantly share code, notes, and snippets.

@to4iki
Created December 31, 2013 12:03
Show Gist options
  • Save to4iki/8195790 to your computer and use it in GitHub Desktop.
Save to4iki/8195790 to your computer and use it in GitHub Desktop.
TypeScript初心者向け勉強会

TypeScript初心者向け勉強会 TypeScript初心者向け勉強会

TypeScriptを使ったほうがいい場面、使わないほうがいい場面

http://kubosho.github.io/slides/tsbeginner/

JavaScriptによる大規模アプリケーション開発の為にTypeScriptが生まれた

  • 型 変数や引数に型指定が可能 プリミティブ、オブジェクト型 なんでもいれられるany

     var name: string = 'hoge';
    

    型指定を省略した場合は型推論により変数の型が決まる

  • クラス ECMAScript6で提案されているクラスを採用 よりオブジェクト指向で採用されているクラスの書き方

  • モジュール exportの有無により外部に公開するかしないかを module

  • インターフェース クラスの振る舞いを外部で指定 interface implement: インターフェースを継承

メリット

型がある事でどんな値が入るのか想定可能 プログラムの設計をきちんとするようになる 結果的にデバッグやテストがしやすくなる

使う場面 / 使わない場面

大規模サービス / コードの行数が200行までに収まるようなライブラリ

jQueryとか読み込む際は、定義ファイルを読み込む d.ts 型情報のリポジトリ: borisyankov/DefinitelyTyped

いつTypeScriptを始めるのか

いつTypeScriptを始めるのか TypeScriptを使ってみたり // Speaker Deck

  • 今じゃない

まだ結構変更がある - 更新頻度高い わりと重い コマンドライン引数なくなったり

jsベースの人が手を出すなら、v.1.0を待ったほうが良い

どんな人が使うべきか

  • 静的言語がベースの人 エディタのサポートが得られる 静的言語の概念がそのまま使える

  • 複数人の開発 型がある事で他人のコードがいじりやすい コード間の整合性がとれる 型情報がドキュメントに 静的言語の概念の上に構築されていれば理解しやすい(「きれいな設計」がどういったものか分かる)

  • 長くメンテナンスする可能性が高い人 コードを減らす

今後どういった位置付け

こてまでJSを書いてきた人には刺さらない気がする 他言語からの呼び水としてはありそう 独自の言語圏になりそう 型情報を外してES6 simとしてだけ使うオプションとか出るんじゃないか

感想

動くドキュメントとしては便利 TypeScriptぽく書くには多少慣れが必要 WebStormの警告がコンパイラの警告と違ったりする 型情報書いていないライブラリもあるのでOSSにコミットしてみたい人とかにはオススメ

コンパイル遅いなら --noResolve引数を: 型参照見ずにコンパイル

Delphiが作成したから使うって理由でもいいんじゃ?

TypeScriptを使ってみたり

好きな所

MS発だし 型がある事によって、IDEとの組み合わせが強力 ゆるやかな型の扱いからお堅いところまで(interfaceかたGenericsまで)

開発環境

  • Node.js npm install

  • エディタ WebStorm 強力な補完の恩恵を受けたいなら

楽な場面

  • IDEで変数定義に飛んだりとかデバッグがやりやすい

  • 簡単に使えるモジュールがある 要するに名前空間

  • function _this that self他を書かなくて済む イベントハンドラに突っ込んだらthisが期待していた値と違うといったのがない

  • メソッドの引数で返ってくる型が決まる

悩む場面

jQueryを使用していて$(this)が動かない 特定の型にキャストしたい 外部のライブラリを使用する際に使いずらい

///

Jser向けジェネリックス入門

  • ジェネリックスとは
class Hoge <これ> {
}

型を外部から渡せるようにしたもの 動的言語には無縁 - ムシしても良い

どういう場面で使うか

  • 任意の型を受け取って返す場合
  • anyを使うと型情報が失われる
  • 型変換は実行時エラーになる
class Hoge <T> {
	var value: T;
	get (): T {
		return ...
	}
	set (value: T) {
	
	}
}

var hoge= new <string> Hoge();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment