🐣

TypeScriptってなんのために使うの?

2022/10/16に公開

タイトルのような疑問を持ちながらTypeScriptをとりあえず書いていた時期が私にもありました。
いちいち型書かなきゃいけないのめんど・・・という時期が。

今回はTypeScriptはなんのために使うものなのか、どんなメリットがあるのかを中心に
TypeScriptの恩恵についてお話ししていきたいと思います!


TypeScriptとは

公式(https://www.typescriptlang.org/ja/)にはシンプルにこう書かれています。

TypeScript は、型の構文を持つ JavaScript です。

え?! つまりTypeScriptってJavaScriptなの?? ってなりますよね。
どういうことなんでしょうか???

実はTypeScriptは、最終的にJavaScriptにコンパイルして実行されます。
(JavaScriptにコンパイルして使う言語を総じて「AltJS」と呼び、他にCoffeeScriptDartなどがあります。)


JavaScriptじゃダメなの??

結局JavaScriptになるなら、意味ないじゃん!!!
と思った方、そんなことはありません✋
TypeScriptはJavaScriptの問題点を補ってくれる、いわばJavaScriptの上位互換です。

「型を定義できない」というのも問題点のひとつで、個人開発や少人数ならまだしも大規模開発になってくると開発スピードに影響が出たり、バグを防ぎづらいなどの問題が出てきます。

そこでTypeScriptを使おう!となるわけですね。


型を定義するってどういうこと?

型ってなに?
定義・・・・????

という方のために補足ですが、実際にコードで見てみると

interface Account {
  id: number
  displayName: string
}

こちらは公式に置いてあった簡単な例ですが、ここではAccoutの

  • idはnumber(数値型)
  • displayNameはstring(テキスト型)

であることが定義されています。

つまりどういうことかというと、idには数値しか、displayNameにはテキストしか使えない状態にしてあげています。


型を定義することでどんないいことが起きるのか

では実際に型を定義することでどんないいことが起きるのでしょうか。
ここでは主な利点として3つ上げてみます。

  1. バグを未然に防ぐ
  2. エディタ補完が強力になる
  3. 可読性が上がる

1.バグを未然に防ぐ

型が定義されていれば、

  • この変数にどんな値が入っているか
  • この関数にはどんな値を渡せばいいのか
  • この関数はどんな値を返すのか

などといったことが見えるようになり、あらゆるパターンを想定してプログラムを書くことができます。結果、予期せぬバグを防ぐことができるというわけですね。
例えば、「nullが返ってくる可能性があるということがわかっていれば防げるバグ」などが挙げられると思います。

もちろん100%防げるかといったらそうではなく、
型定義が誤っている可能性があったり、any型などはすり抜けてしまったりします。

2.エディタ補完が強力になる

互換性のあるエディタでは型定義を元に入力候補を表示する事ができます。
おなじみのVisual Studio CodeはTypeScriptと同じマイクロソフトが開発しているので、当然対応しています。

例えばこのように型を宣言してあげると

type Item ={
  id: number
  name: string
  color: 'red'| 'blue'| 'green'
}

その変数を使用するときにこのように候補を表示してくれます。

地味に見えますがこういったサポートが開発効率を大き上げてくれます。

3.可読性が上がる

複数人による大規模な開発ほど、自分の把握していないコードを触る際に
「この変数にはなにが入っているんだろう・・・」
「この関数にはどんな値を渡せばいいんだ???」
「一体ここでなにが返ってくるんだ(白目)」

といった場面に遭遇することがありますよね。。
しかしTypeScriptなら(しっかり型定義していれば)これらが一目瞭然!
開発の大きな手助けとなります💪


デメリットはないの?

いいことだらけでデメリットがないようにも見えるTypeScriptですが
メンバーのスキルセットによっては学習コストがかかり工数も増えるので、
チームのリソースや開発の規模に合わせて導入を検討するのが良いですね。

ただし長期的にみると得られるメリットの方が大きいと思うので、ぜひ前向きに導入を検討してみてください!(誰)


まとめ

最後まで読んでいただき有り難うございます!

この記事を読んでTypeScriptの恩恵について理解を深められた方は「よっしゃどんどん型つけるぞーー!」と明日からの型付けモチベーションがUPしたのではないでしょうか(?)

記事について疑問やご指摘があれば是非、コメントなどでご連絡ください!
Twitterのフォローもよろしくお願いいたしますϵ( 'Θ' )϶

Discussion