TypeScript 上達の道
by
301 Moved Permanently
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 でした