『初めてのTypeScript』で初めて型に触れる
これはなに
ども、レバテック開発部のもりたです。
みなさん年末年始をいかがお過ごしでしたでしょうか。もりたはこの連休を利用して『初めてのTypeScript』を読みました。今回はその感想です。
いろいろな前提
- もりたのレベル感
- 元々はPythonとかPHPなどの言語をよく書いており、JavaScriptも時々は書いていた
- TypeScript Deep Diveの輪読会に参加したことがある
- TypeScriptは仕事で読むのがメイン
- 動機
- なんとなく書ける気もするが、初心者むけのTypeScriptの書籍を読んで一定レベルを担保しておきたかった
- 『初めてのTypeScript』を読んだというブログ記事を読んで、良さそうだなとおもった
書籍の構成
四部構成を取っており全部で300ページ弱あります。部をそれぞれ説明すると以下の通りです。
- 第一部:TypeScriptの概念
- JavaScript→TypeScriptの導入部分と、基本的な型システムについての紹介
- 第二部:TypeScriptの機能
- 関数、配列、インターフェース、クラスについての型の解説
- 型修飾子、ジェネリックについての解説
- 第三部:TypeScriptの使用
- 型宣言ファイルやIDEなど、実際に使う上で知っておくと良いこと
- 第四部:課外講義
- JavaScriptの構文を拡張したTypeScriptの構文、型のテクニック
第一部と二部がほぼ型についての解説となっており、第四部の後半も型です。JavaScriptからTypeScriptに移行するうえでの大きな違いは型の知識っぽかったので、もりたは型の知識を中心に読みました。
第二部までだと170ページくらいとだいぶコンパクトにまとめられており、一週間くらいで精読するにはちょうどよかったです。また理解度としても、第二部までの知識でTypeChallengeを進められているので十分なレベルかなと感じました[1]。
感想
TypeScriptって型なんだ!!! という驚き
内容の7割くらいが型についてでした。TypeScriptってJavaScriptとそれなりに違うと思ってたんですが、基本的にはランタイムに手を加えずに型だけ追加しているようです。一部JavaScriptの機能に手を加えてしまったところがあるそうで、それは懺悔みたいな形で紹介されていました。
たしかにこれまで、みんな型について喋ってるな〜とは思っていたんですが、そこまでメインの概念だと思っていませんでした。本書を読んだことでTypeScriptの通行手形を渡されたような気持ちになれました。
解説が分かりやすい
初心者向けというだけあり解説が分かりやすかったです。特に型について、各章で「推論、アノテーション、型の絞り込み、割り当て可能性」などのポイントを繰り返し解説する構成になっており、読み進めるうちにその観点が自然とインストールされる感じがありました。自分は一回読んだだけだとだいたい納得できず聞き流してしまうので、繰り返される構成はありがたかったです。
手を動かせる
各章末に演習問題のリンクがついており、手を動かすことができます。手を動かすのって正義なのでね、これも本当にありがたかったです。
演習問題は独特のノリで面白かったです。章末にダジャレもついてます。それ世界共通なんだな〜って思いました。
もしかして型って大切なのか…? という気づき
ジェネリックの章がめちゃくちゃ面白かったです。難しくて最初はこんなん使えるかいと思ってたんですが、なにが難しいのか整理しながら読みすすめたところ理解できました。
ジェネリックって型を関数のパラメータ的に渡せるようにして抽象化するものだと理解してるんですが、パラメータとして渡すという行為と抽象化という概念がジェネリックを理解する過程で結びつきました。関数を使うのも、抽象化されたパラメータに具体的な引数を渡すことで関数を具体化しているのだと理解できます[2]。こういう感じに思考のレイヤーが一枚多くなった気がしてよかったです。プログラミング自体への理解度が高まった感じがありました。
また、そのように抽象化可能な要素として存在している型ってすごいやつなのでは...?! みたいなことを思いました。
次どうしたい
せっかく型おもしれ〜状態になっているので、しばらくはTypeChallengeに取り組もうと思います。そのあとは何かつくろうかな〜〜と考えています。
以上です!!!
レバテック開発部の公式テックブログです! レバテック開発部 Advent Calendar 2024 実施中: qiita.com/advent-calendar/2024/levtech
Discussion