TypeScriptを学び始めると、直面する疑問はいくつもあると思います。
おまじないのようなコンパイラオプションファイル(tsconfig.json)を始め、型エイリアス(Type Alias)とインターフェースの違いや、anyとunknown型の違いなど、ただアプリケーションを開発しているだけではわからない仕様があると思います。
私もWebエンジニアとしてTypeScriptを開発で使い始めた際に、上述のような数多くの疑問に直面しました。そんなときに、それらの疑問を解決してくれたのが「プログラミング TypeScript」でした。
TypeScriptの本はいくつか出版されていますが、今回は私がTypeScriptを勉強し始めた頃に読み、今でも開発の役に立っている「プログラミング TypeScript」を紹介します。
「プログラミング TypeScript」はこんな方にオススメ
- JavaScript/ES6(ES2015)にある程度慣れ親しんでいる人
- 静的型付き言語を扱ったことがある人
- TypeScriptの機能を体系的に勉強したい
- React/Angularなどのフロントエンドフレームワークを使う方法についても簡単に知りたい
目次
「プログラミング TypeScript」の概要
「プログラミング TypeScript」は2020年3月にオライリー・ジャパンから発行された本です。オライリー・ジャパンの概要と目次は以下の通りです。
プログラミング言語TypeScriptの解説書。TypeScriptの型に関する基礎的な内容からその応用、エラー処理の手法、非同期プログラミング、各種フレームワークの利用法、既存のJavaScriptプロジェクトのTypeScript移行の方法まで、言語全般を総合的に解説します。本書全体を通じて、TypeScriptの洗練された型システムを最大限活用するために、コードをどのように記述すべきか、なぜそうすべきかを学べます。
(“O'Reilly Japan - プログラミングTypeScript”)より
目次はオライリー・ジャパンのサイトで確認できます。
私がTypeScriptを勉強し始めたときに読んだ感想
当時私は、Pythonでウェブアプリケーション開発を1年間経験した後、新規プロジェクトでTypeScriptを使うことになり、この本を手に取りました。
フロントエンド開発で多少JavaScriptを触っていたものの、JavaScript/TypeScriptをよく勉強しないまま開発に着手し、その場しのぎで実装していましたが、とうとう限界を感じて「プログラミング TypeScript」で勉強し始めました。
本書で得た知識は、当時はもちろん、現在の開発にも役立っており、TypeScriptを学びはじめた頃に読んでおいてよかったと実感しています。
しかし、あくまでTypeScriptがテーマのため、async/awaitやPromiseを使った非同期処理の詳細な解説や、テストについては網羅されていません。また、非同期ストリームやデコレータなど必要をあまり感じない箇所もあります。
それでもTypeScriptを使った開発で必要な情報は一通り網羅されていると思いますので、入門者が体系的にTypeScriptを学びたい方にはぴったりな本だと感じました。
「プログラミング TypeScript」を読んで特に役立ったこと
本書の内容の多くはどれも開発の役に立つ情報ばかりですが、なかでも特に役に立っていると感じたのは以下の点です
- 型についての解説(特にanyとunknownの違い)
- エラー処理
- マップ型を使った安全なキーと値の組み合わせ
- 型ガード
型についての解説(特にanyとunknownの違い)
TypeScriptの要である型システムにおいて、基本となる型については必ず抑えておくべきポイントです。
面接の際にもよく聞かれますが、初心者が乱用しがちなanyはなるべく避ける理由や、anyとunknownの違いなどは、フロントエンドポジションに転職しようとしている方なら理解しておくべきだと思います。
また、オブジェクト型には4つの宣言方法があり、それぞれの違いや、nullとundefinedの違い、使用頻度は低いもののvoidやnever型などについてもしっかり解説されています。
エラー処理
実装で悩みがちなエラー処理は章立てで解説されており、こちらも学ぶことが多かったです。
エラー処理の方法としてはnullを返したり、例外をスローするなどいくつか方法がありますが、本書では4つの処理方法が紹介されています。
それぞれどんなときに使うべきかや、応用的な専用のデータ型を作る方法まで踏み込んで解説されています。
マップ型を使った安全なキーと値の組み合わせ
TypeScriptを使っていると、オブジェクトでキーとバリューの組み合わせを扱うことがあると思いますが、本書で解説されているマップ型を使った安全な宣言方法も役に立っています。
マップ型はTypeScript特有の機能であり、この本を読んでいなかったら今でも知らなかったと思います。
型ガード
候補となる型が複数ある場合、コンパイラに怒られるのでas(型アサーション)を使うのは初心者や面倒くさがりの人がやってしまいがちだと思います。
しかし、TypeScript Deep Diveなどでも言及されているように、asの乱用はプロジェクトを破壊する恐れがあるためなるべく使用を避けるべきです。
多くの場合、アサーションを使用すると、レガシーのコードを簡単に移行できます(また、コードベースにほかのコードのサンプルをコピー・ペーストしたりもできます)。しかし、アサーションの使用には注意が必要です。下記のように、必要なプロパティを実際に追加するのを忘れても、コンパイラはあなたを守りません
(TypeScript Deep Dive - Type Assertion)より
本書で紹介されている型ガードなど手法を取り入れることで、むやみなasの使用を避けることができました。
「プログラミング TypeScript」はある程度プログラミング経験がある人にオススメ!
本書の冒頭でも書かれている通り、ある程度プログラミングの経験があり、クラスや関数などになじみがある人を対象としています。
それらの知識を前提に書かれているため、ある程度プログラミングに慣れ親しんだ人でないと読みすすめるのは難しいかもしれません。
実際にアマゾンのレビューなどを見ると
「わかりにくい」
「解説が難しすぎる」
という声も散見されるなど、プログラミング初心者やJavaScript/ES6を触ったことがない人にはオススメできません。
逆に、静的型付け言語を使った経験があり、JavaScript/ES6やTypeScriptを少しでも使ったことがある人ならすんなり読める1冊だと思いますのでオススメです。
Amazonのランキングにおいても、技術書のカテゴリが細分化されていないAmazon.co.jpでは100位圏外ですが、細分化されているAmazon.comでは、3つのカテゴリでペーパーバック、kindle版ともにトップ30位以内にランクインしています。
海外のブログでも「Effective TypeScript」と並んでオススメされていることが多いなど、2022年5月時点でも定番のTypeScript本と言えると思います。
まとめ
今回は「プログラミング TypeScript」について、私がTypeScriptを学び始めた際に活用した経験や、どんな人におすすめなのかご紹介しました。
TypeScriptの教材としてはTypeScriptの公式ドキュメントや、TypeScript Deep Dive、 Udemyで勉強する手段などもありますが、技術書を使った学習方法も有効な手段です。
TypeScriptについて体系的に学びたいという方はもちろん、ディスプレイで文章を読むのが苦手な方や、実装で困った時にすぐに使える手引書が欲しい!という方には本での学習がオススメです。
しかし、「技術書なんて高くて買えない!」という方や「技術書にあまりお金をかけたくない」という方もいると思います。
そんな方にオススメなのがPayPayモールです。ソフトバンクユーザーかワイモバイルユーザーであれば、毎週日曜日は最大20.5%還元です。なかでもbookfan PayPayモール店は送料無料でお得なクーポンがあるため私も愛用しており非常にオススメできるショップです。
bookfan PayPayモール店のリンクは下記に貼ってありますので、興味のある方は一度のぞいてみてください。
本書をディスプレイに表示して写経したり、リファレンスとして活用したい方であれば、オライリー・ジャパンからの購入がおすすめです。Amazon.co.jpではkindle版が販売されていませんが、オライリー・ジャパンでは電子版も販売されており、PDFファイルでダウンロードが可能です。

本書で解説されていないJavaScript/Node.jsについては「ハンズオン Node.js」がオススメです。
npmやjestを使った単体/統合テストや非同期プログラミングなど、実践的な方法に絞って書かれた本です。
こちらも併用すると、よりスムーズにTypeScriptを使った開発ができるようになりますので、気になった方はこちらも確認してみてください。