この記事では、「TypeScriptが難しい!」と思ってなかなか学習が進められない方に向けておすすめの学習方法についてまとめている。
なにしろ私もこのTypeScriptの習得にたいへん手こずった一人である。
それでもなんとかインプットを終わらせて現在業務でTypeScriptを使って開発をしている。
是非、今TypeScriptの学習を進めていて、モチベーションが落ちていたり、諦めかけているあなたの助けになれば幸いだ。
TypeScriptは難しい
まず最初に「TypeScriptは難しい」。
私は以前までPythonをメインに扱っていて、TypeScriptはもちろんJavaScriptですら業務で扱えるほどの実力を持っていなかった。むしろ「何だか扱いにくいやつ」といった感じで苦手意識すら持っていた。
それはあまりにも関数の書き方が違ったり、何だか変数の書き方も違ったりする。
とにかく見慣れない記法がたくさんあり、導入には非常に手こずった。
しかし、TypeScriptを習得してから型の安全性の恩恵を十分に感じており、今ではバックエンドすらTypeScriptを利用して開発したりする。
TypeScriptさえわかっていればフルスタックに活躍の場を広げることができるので、是非とも諦めずに挑戦して欲しい。
解決するための方針
「TypeScriptは難しい」と言う課題に対しどのように取り組んでいくべきか方針を伝えたいと思う。
1. とにかく型を抑えろ!
TypeScriptが何だか難しいと言う人はまず「JavaScript」+「型の仕組み」を抑えてみてはどうだろうか?
まず最初にJavaScriptがわからない方は、JavaScriptの基礎をしっかりと学ぼう。
正直これがわかっていないとTypeScriptの理解はかなり非効率になる。
JavaScriptを知らずして、TypeScriptを扱うことはできない。
JavaScriptの基礎が理解できていれば、次はTypeScriptにおける「型の仕組み」を理解しておくことが望ましい。
TypeScriptは型の安全性を非常に高く担保できる仕組みを機能として持っている。
その一つが「型の仕組み」である。
そしてこの「型の仕組み」は覚えること、理解すべきことが限定的なのでまずはこちらを最低限理解できていれば、なんとなくソースコードが読める状態になるはずだ。
例えば以下のYouTube動画は私がまだTypeScriptを学習して間もない頃に参考にさせてもらった。
この動画のおかげでTypeScriptへのハードルが思いっきり低くなった。
2. 基本構文を理解する
次に理解すべきは基本構文である。
構文の学習は「サバイバルTypeScript」が非常に参考になった。
これを最初から全部理解しようとすると挫折するので、基本構文を最低限抑える。
ここで言う基本構文とは、私の中では英語で言うS+V+Oといったような言語を扱う上での基本ルールのことである。
例えば以下のような要素である。
- 変数の定義
- 条件分岐
- 関数の作成
- インターフェース、抽象化
- 非同期処理
など
既にJavaScriptを理解している人にとっては、一部改めて学習しなくても済んでしまうので、そういう意味でもJavaScriptはしっかりと抑えておいた方が良い。(最終的にTypeScriptからJavaScriptにコンパイルされるのでどのみち理解することは必須。)
3. フレームワーク、ライブラリで利用する
TypeScriptをTypeScript単品で扱うことはない。
例えば「React+Next+TypeScript」といった構成であったり、「Vue+Nuxt+TypeScript」と言うようなライブラリやフレームワークと組み合わせて使用する。
そのためなんでも良いので、動画教材やドキュメントなどを参考にしながらハンズオン形式でサンプルアプリをライブラリやフレームワークを使って作ってみることを推奨する。
私はUdemyの「Firebase + React Hooks(TypeScript)によるWebアプリ開発」でTwitterのクローンアプリを作ったり、「Nuxt.js入門決定版!Vue.jsのフレームワークNuxt.jsの基本からFirebaseと連携したSPAの開発まで」でTODOアプリを作ったりした。
まとめ
今回は、「TypeScriptが難しい!」と思ってなかなか学習が進められない方に向けておすすめの学習方法についてご紹介しました。
いきなり最初から全てを理解しようとすると、どうしても導入に時間がかかりいつまで経っても現場で活躍することができないため、段階的に学習を進め、「この時点であればなんとなくソースが読める→なんとなく書けるようになる→こだわりを持って書くようになる」といった形でアウトプットしていく良いかと思います。