Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TypeScript 上達の道
Search
Kanon
July 25, 2025
Technology
6.5k
24
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeScript 上達の道
QiitaTechFesta 2025 (#QiitaTechFesta) の登壇資料です。
Kanon
July 25, 2025
More Decks by Kanon
See All by Kanon
そうだ、鳥取、いこう
ysknsid25
0
23
Kotlinで学ぶ 代数的データ型
ysknsid25
5
1.8k
Java で学ぶ 代数的データ型
ysknsid25
4
2.3k
Type Challengesに新しい問題を追加して Type ChallengesのMaintainerになった話
ysknsid25
3
4.4k
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
1.4k
GAS × Discord bot × Gemini で作ったさいきょーの情報収集ツール
ysknsid25
1
2.5k
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
9
4.4k
そうだ、神戸へ行こう
ysknsid25
2
17k
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ysknsid25
12
6.5k
Other Decks in Technology
See All in Technology
freeeにおける AI を用いた ブラウザ動作確認の自動化の取り組み
freee
PRO
0
220
プロダクトが成長すると、 プロダクトマネージャーの仕事はどう変わるのか - 「まず作る」から「小さく学び、確かめながら進む」へ
sansantech
PRO
1
370
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
100
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
5
9.8k
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
150
1週間、Opus封印でお願いします
kintotechdev
0
160
撮るだけでは終わらない。ソニーが挑むB2Bカメラソリューション開発
sony
0
110
freeeにおけるSoftware Factory
freee
PRO
0
520
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
250
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
13k
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
4
2.4k
Claude Code をローカルとサーバー上で利用した際の Bedrock 利用料をユーザー単位で一本化してみる
ohorig
0
160
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
530
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
640
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
290
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Facilitating Awesome Meetings
lara
57
7.2k
Being A Developer After 40
akosma
PRO
92
590k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
280
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Transcript
Kanon #QiitaTechFesta TypeScript 上達の道 ysknsid25 ysknsid25.bsky.social
⛳ このセッションのゴール ⛳ 2 僕が紹介した方法で TypeScript練習してみよう と思ってもらう
3 自己紹介 そういうお前はさぞお上手なんやろなぁ? Kanon • Type Challenges のメンテナ ◦ 一応全問解いた
◦ 型パズルの解きかたの本を書いたり • UnJSとかNitroとかにコントリビュートしてる
4 ★46.1k の TypeScriptの型パズル集 補足: Type Challengesとは
5 anyで定義された型を適切に定義する 補足: Type Challengesとは
6 Maintainer の仕事 補足: Type Challengesとは • 新しく作られた問題(PR)をマージする ◦ 自分自身も新しい問題を作る
• 過去の問題に対するテストケースの追加 • より学習効率が高くなるような機能の追加 • 利用しているライブラリのバージョンアップ対応など
7 TSKaigi 2025 の登壇資料を見てください👀 補足: Type Challengesのメンテナになるまでの話
8 ⚠ おことわり⚠ あくまで 僕の場合は です • 効果を保証するものではない ◦ ので
X とか はてブ コメントで攻撃とかやめてね。。。 • 練習方法のひとつとして持っておけるような話にはなると思う • 型に絞った話をする ◦ “TypeScript 上達への道” なので • TaPLとかで扱うような型検査の詳しい話とか、メンタルモデルがどうこうみたいな高 尚な話はしません
9 ⚠ おことわり⚠ sadnessOjisan さんのTSKaigi Kansaiでの 発表タイトルとかなーり似てるけどたまたまです... • 話したいことからタイトルつけ たらめっちゃ似てしまった...
• 内容は結構違う(と思う) • こちらもめっちゃいい話なので 是非資料見てほしい
10 前提の認識合わせ というわけで改めて最初にやりたいこと
11 上達の定義: わかる → できる になる 前提の認識合わせ1 書かれた型を読める TypeScriptの機能を使いこなして型を作れる
12 自分がどのレベルにいるか? 前提の認識合わせ
13 “型を使いこなす”の定義 前提の認識合わせ2 Lv. 5 Lv. 4 Lv. 3 Lv.
2 Lv. 1 基本的な型注釈がつけられる 型エイリアスやインターフェースを使って構造化され たデータ型が定義できる ユニオン型・リテラル型・列挙型の活用 ジェネリクスの活用 Conditional Types, Mapped Types, Index Access Type の活用
14 基本的な型注釈がつけられる Lv. 1 • numberとかstringとかbooleanとか基本型はつけられる • 関数の引数や戻り値に明確な型をつける
15 型エイリアスとインターフェースの活用 Lv. 2 • typeやinterfaceを使って構造化されたデータの型を定義し、再利用・変更に強い コードを書く
16 ユニオン型・リテラル型・列挙型の活用 Lv. 3 • 値の制限を型で行い、バグを防ぐ
17 ジェネリクスの活用 Lv. 4 • 型の再利用性と汎用性を保ちつつ、安全性も確保 • OSSのコード見てても、ここまで知っていればほとんど読めるのでは(?)
18 条件型・マッピング型・インデックス型の応用 Lv. 5 • Conditional Types, Mapped Types, Index
Access Types • infer, as, keyof, typeof • これらを組み合わせて複雑な構造 or 抽象的な型を作れる
19 レベルに合わせた学習をしていく
20 いきなりType Challengesは全然おすすめできない レベルに合わせた学習 • Type Challenges はレベル5まで できる 前提で問題が存在する
◦ 初心者がいきなりやると挫折する確率が高い ◦ 僕も挫折した • Type Challenges に取り組むまでにしておきたいことを以降はレベル別に紹介す る • まずはLv.1~5の全てに対して わかる 段階に持っていく
21 公式ドキュメントや書籍を読む Lv. 1 ~ 3 まで • 公式ドキュメント •
サバイバル TypeScript • うひょ さんのブルーベリー本 上二つも十分わかりやすく なにより無料
22 type-fest のコードを読んでみる Lv. 4 ~ 5 • TypeScriptのUtility Type集
• Type Challenges の冒頭でも紹介され ている • コメントに処理のイメージが書かれてた りするので、具体的なイメージも湧きや すくおすすめ
23 Merge type-fest サンプル1 • Destination, Source はジェネリクス • Simplifyってなにするの?
• SimpleMergeって何するの? • PickIndexSignatureって何するの? この辺を追っていくことで Conditional Typesとか もろもろ使い方を覚えられる 知らないものが出てきたら 公式ドキュメントへ戻る これを繰り返す
24 Type Challenges に取り組む Lv. 1 ~ 5 までを使いこなす •
全部解く必要はないと思う ◦ hardからは型システムで計算とかし始める ◦ 「すごいけど実戦でいつ使うんそれ」な問題が大半 ◦ mediumまでを3周くらいすれば実戦でも勝手に手が動くようになる ◦ その頃にはOSSライブラリの型定義とかも難なく「読める、読めるぞぉ」となる(と思う)
25 上級までに困ったら Lv. 1 ~ 5 までを使いこなす
26 上級までに困ったら Lv. 1 ~ 5 までを使いこなす
27 Pick 例題
28 Pick 解答例 例題
29 Run-length encoding 上級になると
30 Run-length encoding 解答例 上級になると
31 Kanon流 TypeScript 上達への道 まとめ • 自分のレベルを把握する • レベルに応じたトレーニングをする ◦
ドキュメントなどを読む ◦ type-fest などの既存のUtility ライブラリを読む ◦ Type Challengesに取り組む • 知らない概念が出てきたら、戻る • とにかくやる
Happy Hacking !! 水瀬いのり さんが推し の @ysknsid25 @ysknsid25.bsky.social Presented by
Kanon でした