TypeScript 上達の道
by
301 Moved Permanently
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Kanon #QiitaTechFesta TypeScript 上達の道 ysknsid25 ysknsid25.bsky.social
Slide 2
Slide 2 text
⛳ このセッションのゴール ⛳ 2 僕が紹介した方法で TypeScript練習してみよう と思ってもらう
Slide 3
Slide 3 text
3 自己紹介 そういうお前はさぞお上手なんやろなぁ? Kanon ● Type Challenges のメンテナ ○ 一応全問解いた ○ 型パズルの解きかたの本を書いたり ● UnJSとかNitroとかにコントリビュートしてる
Slide 4
Slide 4 text
4 ★46.1k の TypeScriptの型パズル集 補足: Type Challengesとは
Slide 5
Slide 5 text
5 anyで定義された型を適切に定義する 補足: Type Challengesとは
Slide 6
Slide 6 text
6 Maintainer の仕事 補足: Type Challengesとは ● 新しく作られた問題(PR)をマージする ○ 自分自身も新しい問題を作る ● 過去の問題に対するテストケースの追加 ● より学習効率が高くなるような機能の追加 ● 利用しているライブラリのバージョンアップ対応など
Slide 7
Slide 7 text
7 TSKaigi 2025 の登壇資料を見てください👀 補足: Type Challengesのメンテナになるまでの話
Slide 8
Slide 8 text
8 ⚠ おことわり⚠ あくまで 僕の場合は です ● 効果を保証するものではない ○ ので X とか はてブ コメントで攻撃とかやめてね。。。 ● 練習方法のひとつとして持っておけるような話にはなると思う ● 型に絞った話をする ○ “TypeScript 上達への道” なので ● TaPLとかで扱うような型検査の詳しい話とか、メンタルモデルがどうこうみたいな高 尚な話はしません
Slide 9
Slide 9 text
9 ⚠ おことわり⚠ sadnessOjisan さんのTSKaigi Kansaiでの 発表タイトルとかなーり似てるけどたまたまです... ● 話したいことからタイトルつけ たらめっちゃ似てしまった... ● 内容は結構違う(と思う) ● こちらもめっちゃいい話なので 是非資料見てほしい
Slide 10
Slide 10 text
10 前提の認識合わせ というわけで改めて最初にやりたいこと
Slide 11
Slide 11 text
11 上達の定義: わかる → できる になる 前提の認識合わせ1 書かれた型を読める TypeScriptの機能を使いこなして型を作れる
Slide 12
Slide 12 text
12 自分がどのレベルにいるか? 前提の認識合わせ
Slide 13
Slide 13 text
13 “型を使いこなす”の定義 前提の認識合わせ2 Lv. 5 Lv. 4 Lv. 3 Lv. 2 Lv. 1 基本的な型注釈がつけられる 型エイリアスやインターフェースを使って構造化され たデータ型が定義できる ユニオン型・リテラル型・列挙型の活用 ジェネリクスの活用 Conditional Types, Mapped Types, Index Access Type の活用
Slide 14
Slide 14 text
14 基本的な型注釈がつけられる Lv. 1 ● numberとかstringとかbooleanとか基本型はつけられる ● 関数の引数や戻り値に明確な型をつける
Slide 15
Slide 15 text
15 型エイリアスとインターフェースの活用 Lv. 2 ● typeやinterfaceを使って構造化されたデータの型を定義し、再利用・変更に強い コードを書く
Slide 16
Slide 16 text
16 ユニオン型・リテラル型・列挙型の活用 Lv. 3 ● 値の制限を型で行い、バグを防ぐ
Slide 17
Slide 17 text
17 ジェネリクスの活用 Lv. 4 ● 型の再利用性と汎用性を保ちつつ、安全性も確保 ● OSSのコード見てても、ここまで知っていればほとんど読めるのでは(?)
Slide 18
Slide 18 text
18 条件型・マッピング型・インデックス型の応用 Lv. 5 ● Conditional Types, Mapped Types, Index Access Types ● infer, as, keyof, typeof ● これらを組み合わせて複雑な構造 or 抽象的な型を作れる
Slide 19
Slide 19 text
19 レベルに合わせた学習をしていく
Slide 20
Slide 20 text
20 いきなりType Challengesは全然おすすめできない レベルに合わせた学習 ● Type Challenges はレベル5まで できる 前提で問題が存在する ○ 初心者がいきなりやると挫折する確率が高い ○ 僕も挫折した ● Type Challenges に取り組むまでにしておきたいことを以降はレベル別に紹介す る ● まずはLv.1~5の全てに対して わかる 段階に持っていく
Slide 21
Slide 21 text
21 公式ドキュメントや書籍を読む Lv. 1 ~ 3 まで ● 公式ドキュメント ● サバイバル TypeScript ● うひょ さんのブルーベリー本 上二つも十分わかりやすく なにより無料
Slide 22
Slide 22 text
22 type-fest のコードを読んでみる Lv. 4 ~ 5 ● TypeScriptのUtility Type集 ● Type Challenges の冒頭でも紹介され ている ● コメントに処理のイメージが書かれてた りするので、具体的なイメージも湧きや すくおすすめ
Slide 23
Slide 23 text
23 Merge type-fest サンプル1 ● Destination, Source はジェネリクス ● Simplifyってなにするの? ● SimpleMergeって何するの? ● PickIndexSignatureって何するの? この辺を追っていくことで Conditional Typesとか もろもろ使い方を覚えられる 知らないものが出てきたら 公式ドキュメントへ戻る これを繰り返す
Slide 24
Slide 24 text
24 Type Challenges に取り組む Lv. 1 ~ 5 までを使いこなす ● 全部解く必要はないと思う ○ hardからは型システムで計算とかし始める ○ 「すごいけど実戦でいつ使うんそれ」な問題が大半 ○ mediumまでを3周くらいすれば実戦でも勝手に手が動くようになる ○ その頃にはOSSライブラリの型定義とかも難なく「読める、読めるぞぉ」となる(と思う)
Slide 25
Slide 25 text
25 上級までに困ったら Lv. 1 ~ 5 までを使いこなす
Slide 26
Slide 26 text
26 上級までに困ったら Lv. 1 ~ 5 までを使いこなす
Slide 27
Slide 27 text
27 Pick 例題
Slide 28
Slide 28 text
28 Pick 解答例 例題
Slide 29
Slide 29 text
29 Run-length encoding 上級になると
Slide 30
Slide 30 text
30 Run-length encoding 解答例 上級になると
Slide 31
Slide 31 text
31 Kanon流 TypeScript 上達への道 まとめ ● 自分のレベルを把握する ● レベルに応じたトレーニングをする ○ ドキュメントなどを読む ○ type-fest などの既存のUtility ライブラリを読む ○ Type Challengesに取り組む ● 知らない概念が出てきたら、戻る ● とにかくやる
Slide 32
Slide 32 text
Happy Hacking !! 水瀬いのり さんが推し の @ysknsid25 @ysknsid25.bsky.social Presented by Kanon でした