Typescript 概要

きっかけ

  • Node.js における設計ミス By Ryan Dahl←この翻訳・解説記事を読んでnode開発者が好きだと言うTypescriptに興味をもちました。逆になんで今まで触れてこなかったかと言うとaltJSの将来性があるのか、ちょっとよくわからずに食わず嫌いしてたからです。
  • もう一つの理由はjsメインで案件を探したときに、TypeScriptを使ってるところが多かったからです。静的型付けができるぐらいの知識しかなかったですが、それ以外のメリットもあってのことなんでしょうか。その辺も調べられたらと思います。

目次

  • Typescript概要
  • ユースケース
  • 参考サイトまとめ

Typescript概要

  • マイクロソフトによって開発されメンテナンスされているオープンソースの言語
    • マイクロソフトやその外部の顧客たちの間で、JavaScriptで大規模アプリケーション開発をする上での欠点を補うために作られた
    • 2012年10月に初めて外部に公開
    • ECMAScript言語標準が将来的にクラスベースオブジェクト指向をサポートする提案があることを踏まえ、その提案に基づく形で開発(静的型付けはTypescript独自)
  • Javascriptに省略可能な静的型付けクラスベースオブジェクト思考を加えたJavascriptのスーパーセット
    • スーパーセット: 部分集合:包含関係があること
  • クライアントサイドでもサーバサイドでも使える
  • 既存のJavaScriptプログラムは、全て有効なTypeScriptプログラムになる
    • jsのスーパーセットだから
  • 既存のJavaScriptライブラリに型情報を付与して利用可能

ユースケース

  • TypeScriptを使った方がいいケースとは?の簡単なまとめ+私見です
  • ソースコードが膨大である場合
    • 特にSPAの場合
    • 「誰かが変更したコードが他の人のコードを破損させてしまう可能性があるなら、何らかの安全機構を持つ方がいい」
    • 「ソースコードが巨大でなければ、型アノテーションを追加してコードを長くする意味はおそらくない」
    • 「コードサイズの増加はおよそ30パーセントほど」
  • 強い型付き言語のバックグラウンドを持つメンバが多い場合
  • Babelの代替(ES5以降のjsの代替?)
    • ESにない機能を使えるかららしい。
  • ライブラリあるいはフレームワークによる推進
    • Angular2など

使わない方がいい場合

  • 追加のトランスパイルにかかる負荷
    • 全てのブラウザがES6をサポートしたら…と言う事らしい
    • 私見:JSX等をコンパイルするときは特に問題にならないんじゃないでしょうか
  • パフォーマンス
    • ミリ秒が問題になる場合、トランスパイラが腕の良いプログラマの最適化レベルを上回ることはない
    • 私見:高速化が超必須な時と言う事でしょう
  • 迅速性(柔軟性?)
    • JSはより機敏で融通がきく。内容を簡単に変更することも可能
    • 例えるならTypeScriptはWindowsで、JavaScriptはLinuxのようなもの

まとめ

  • 型付けによるコードの壊れにくさ、バグの回避にメリットを感じることが多いようです。元々静的型付け言語のバックボーンがある人は触りやすいようです
  • マイクロソフトが開発しているというのも採用されやすさに繋がっていそう。サーバサイドで使用する場合はより静的型付けの重要性も増しそうです。次は実際の記述をやって行こうと思います

参考サイトまとめ