TypeScript とは
2014年ごろにMicrosoftによって開発・発表されたプログラミング言語です。
JavaScriptを拡張して作られており、静的型付けのクラスベースオブジェクト指向言語になっています。
TypeScriptをコンパイルすると、JavaScriptのコードに変換されるためJavaScriptが動く環境であればすぐに使うことができます。
JavaScriptのライブラリなども使用することができます。
2017年にはGoogle社内の標準言語としてTypeScriptが承認される
つまりは世界の先生が認めた言語になり将来性があるという事です。
TypeScript だと何ができるの
基本的にECMAScript 6で出来るようクラス、アロー演算子、オプション引数、デフォルト引数などなどの機能は一通りそろっています。
さらに言語拡張として以下の機能が存在している
- 型注釈(変数、引数、戻り値などの型宣言)とコンパイル時の型チェック
- 型推論、型ガード - if文の instanceof などを利用した型推論
- インタフェース
- 列挙型
- Mixin
- ジェネリック
- 名前空間
- タプル型
- 共用体型, 交差型(英語版)
- 型エイリアス
引用 Wikipediaより
つまり一言で表すと JavaScriptの進化系!!! だと言いたい・・
#TypeScriptのメリット
個人的に感じるTypeScript のメリットですが
##1.エラーの事前検知
JavaScriptはご存じの通りスクリプト言語になります。そのためコードに不備があっても実行時まで気づくことができません。
TypeScriptはコンパイル言語になります。TypeScriptをコンパイルしてJavaScriptに変更して実行しています。
そのためコード不備などは事前に検知することができます。
JavaScriptあるあるだと思いますが、型定義がないため実行してみたら想定外の結果が返却されることも
TypeScriptでは事前に検知できます
・JavaScript
calcPlus(let val1, let val2) {
return val1 + val2;
}
console.log(calcPlus("1","3"))
実行結果は"13"と文字列が結合されて出力されてしまいます。
一方TypeScriptでは
・TypeScript
calcPlus(let val1:number, let val2:number):number {
return val1 + val2;
}
console.log(calcPlus("1","3"))
と記載するとコンパイルエラーが発生し実行ができません。
関数が複雑化すればするほど、どこで何の型を使っているか不明になります。そのため型不正等で事前に検知できるのはホントにありがたい。
##2.型があるためソースの可読性が上がる
人が書いたJavaScriptを読んでると以下の様な経験ありませんか?
・ここのオブジェクト何が入っているの?
・関数からなんかオブジェクト返ってくるんだけど中身に何が入っているか分からない。結局中身のソースを解析しないとその関数使えない
・いつの間にか知らないプロパティが追加されてるんだけど・・・
などなど、型がない分やりたい放題できます。
自分だけで書いてる分には楽でいいんですが、プロジェクトなどで複数人で記載すると。
いやーカオスカオス。脳内で何人、人を刺したかw
Javaなどの静的型付けの言語はまだ最低限中身に何が入っているか分かるから読みやすいが、
オブジェクトの中身が分からないと結局ソースコードを追わないとソースが書けない。そのため工数がかかるって悪循環・・・
その分TypeScriptは型を宣言できるので圧倒的にソースコードの解析速度が速い。
って言うのが個人的に感じたメリットです
any?なにそれ?おいしいの?使うやつは死ねばいいのに
#TypeScriptのデメリット
・開発者の少なさ
新しい技術って言うこともあり経験者が圧倒的に少ないです。
いつの時代も新しい技術は開発者が足りないです。
・型がある事の弊害
フロントエンド開発が長ければ長いほどこの弊害がでかいです。最初は型が煩わしく感じることが多いかと思います。
自分はJavaエンジニアなのであまり違和感なく入れましたが、人によってはここに違和感を感じることでしょう。
#JavaScriptとの互換性
上記でも記載しましたが、TypeScriptはコンパイルをするとJavaScriptが生成されます。
そのため、JavaScriptの相性は抜群です。てかコンパイル後同じ言語になりますからね。
普通にJavaScriptのライブラリも使用できます。
#フレームワーク
昨今JavaScriptフレームワークがどんどん出てきていますが、有名なフレームワークである[Angular.js]、[Vue.js]、[React.js]などのフレームワークでの開発ができます
#最後に
googleでも正式に採用されていますし、今後どんどん採用される企業が出てくると思います。
フロントエンドの需要が高まっている今だからこそこう言う技術をどんどんと取り入れたいですね