Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Type Challengesに新しい問題を追加して Type ChallengesのMain...
Search
Kanon
May 24, 2025
Technology
2.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Type Challengesに新しい問題を追加して Type ChallengesのMaintainerになった話
TSKaigi 2025の登壇資料です。
Kanon
May 24, 2025
More Decks by Kanon
See All by Kanon
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
690
TypeScript 上達の道
ysknsid25
24
6.4k
Kotlinで学ぶ 代数的データ型
ysknsid25
5
1.7k
Java で学ぶ 代数的データ型
ysknsid25
4
2.2k
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
1.4k
GAS × Discord bot × Gemini で作ったさいきょーの情報収集ツール
ysknsid25
1
2.4k
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
9
4.3k
そうだ、神戸へ行こう
ysknsid25
2
17k
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ysknsid25
12
6.3k
Other Decks in Technology
See All in Technology
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
1.2k
AWS環境のセキュリティ不安を解消した企業事例 ~よくある課題と対策を一挙公開~
asanoharuki
0
230
基調講演:人とAIをつなぐIoTの今と未来 ー 「フィジカル」と「デジタル」が出会うその先へ【SORACOM Discovery 2026】
soracom
PRO
0
350
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
180
AI時代におけるエンジニアの新たな役割──FDEとクオリアの探求/登壇資料(戸井田 裕貴)
hacobu
PRO
0
620
エンタープライズデータへ安全につなぐ Production-ready なエージェント設計 ― AI × MCP リファレンスアーキテクチャ ― #AIDevDay
cdataj
1
190
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
0
170
最新IoT事例11選に学ぶ!現場の成功パターンと実践のコツ【SORACOM Discovery 2026】
soracom
PRO
0
120
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
760
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
240
AI時代におけるテストの基礎の再定義 / Rethinking the Fundamentals of Testing in the AI Era
mineo_matsuya
15
6k
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.2k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
HDC tutorial
michielstock
2
760
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
250
Six Lessons from altMBA
skipperchong
29
4.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
190
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Become a Pro
speakerdeck
PRO
31
6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
600
How to make the Groovebox
asonas
2
2.3k
Transcript
Kanon #TSKaigi 2025 Type Challengesに新しい問題を追加して Type ChallengesのMaintainerになった話 ysknsid25 ysknsid25.bsky.social
2 Type Challengesとは
3 TypeScriptの型パズル集 Type Challengesとは
4 anyで定義された型を適切に定義する Type Challengesとは
このLTのゴール 5 帰ったらType Challenges解いてみよう と思ってもらうこと 初心者編
このLTのゴール 6 帰ったらType Challenges(他のOSSでも)に コントリビュートしてみよう と思ってもらうこと 中・上級者編
7 Type Challengesをやる理由 初心者編
こういう悩みを持ってる人にやってみてほしい 8 • ドキュメントとか参考書を読み込んだのに、全然型システムを使いこなせて る気がしない 😭 • この辺のキーワードに馴染みがない ◦ Inferring
Within Conditional Types ◦ Conditional Types ◦ Template Literal Types ◦ Indexed Access Types ◦ keyof Type Operator 初心者編
9 TypeScriptのいい教材はたくさんある 初心者編
10 公式ドキュメントも読む、読む、読む 初心者編
11 よっしゃTSの型システムを使いこなすぞ !!!!!!!! てんぷれーとりてらる?こんでぃしょなるたいぷ?なんぼのもんじゃい 初心者編
12 さーて いい感じに型を書き換えるOSSコントリビュートしていくか 初心者編
13 …
14 … …
15 … … …
16 ワイ「全然 書けねえじゃん」 ???「いや、申し訳ございません」 これの為だけにわざわざ十三行った
17 わかる と できる は違う いろんなところで言われてる話だけど 初心者編
18 Type Challengesってのがあるらしい やってみるか... 初心者編
19 全問解いたれ • 結論: 全部解く必要はないと思う ◦ hardからは型システムで計算とかし始める ◦ 「すごいけど実戦でいつ使うんそれ」な問題が大半 ◦
mediumまでを3周くらいすれば実戦でも勝手に手が動くようになる ◦ その頃にはOSSライブラリの型定義とかも難なく「読める、読めるぞぉ」となる(と思う) • 「Type Challengesは全問解く意味はない」という意見が本当か確かめるためにも解いた ◦ 自分もそれを言うためには全部解く必要があると思ったから 初心者編
20 全問解いたれ • 結論: 全部解く必要はないと思う ◦ hardからは型システムで計算とかし始める ◦ 「すごいけど実戦でいつ使うんそれ」な問題が大半 ◦
mediumまでを3周くらいすれば実戦でも勝手に手が動くようになる ◦ その頃にはOSSライブラリの型定義とかも難なく「読める、読めるぞぉ」となる(と思う) • 「Type Challengesは全問解く意味はない」という意見が本当か確かめるためにも解いた ◦ 自分もそれを言うためには全部解く必要があると思ったから 作者のAnthonyさん曰く 「mediumくらいまで解ければ普通にすごい」 って一昨日のスピーカーディナーで言ってた 初心者編
21 全通 + mediumまでを2周して解説本を書いた 初心者編
22 そんなある日 初心者編
23 これ問題作れるんじゃね? PR作成、っと… 初心者編
24 🎉
25 このへんで 量が質に転化 してきたこと を実感した 手がするする動いて他の OSSにもコントリビュートできるようになってきた 中・上級者編
26 追加した問題 中・上級者編
27 IsAlphabet 中・上級者編
28 IsAlphabet type IsAlphabet<S extends string> = any type cases
= [ Expect<Equal<IsAlphabet<'A'>, true>>, Expect<Equal<IsAlphabet<'z'>, true>>, Expect<Equal<IsAlphabet<'9'>, false>>, Expect<Equal<IsAlphabet<'!'>, false>>, Expect<Equal<IsAlphabet<'😂'>, false>>, Expect<Equal<IsAlphabet<''>, false>> ] あとで解きたい人はここから 中・上級者編
29 解答例
30 IsAlphabet 解答例 type IsAlphabet<S extends string> = Uppercase<S> extends
Lowercase<S> ? false : true; 受け取ったSが大文字にしても小文字にしても同じものはAlphabetでない • “A” と “a” • “!”, “😂”, “9”
31 後日談 中・上級者編
32 Type ChallengesのMaintainerになった 🎉 中・上級者編
33 Maintainerになった経緯 中・上級者編 • Type Challengesでレベルを上げたあとはUnJSにたくさんコントリビュートしてた • そこでAnthonyさんに何度かレビューしてもらう機会があった ◦ それこそ、ぶっ壊れてたlinterの設定修正とか
• その後blueskyで相互フォローになりちょこちょこ話すことがあった • 一昨日のスピーカーディナーで ”はじめまして”して、Type Challegesの話題になった • 自分が書いたZenn Bookを見てもらったところ、「メンテナーやってみる?」とお誘いをいただく というジョブズもびっくりな ”Connect the dots”確変イベントが発生した 当初このLTは問題追加したところで終わりだった
34 まとめ
35 まとめ • いい教材(インプット材料 )を読んで、 Type Challengesのmediumまでを3 周くらいする と学習効果が高そう ◦
型システム周りを手を止めずにコーディングできるようになってくる ◦ OSSのライブラリのコードも「読める、読めるぞぉ」になる ◦ 突然新しい問題を思いつくようになる • 量が質に転化する • Type Challengesに限らずOSSに貢献するといいことがある (かもしれない ) • 自分が会ってみたい人がいる場所があれば、是非会いに行こう
36 食戟のソーマ 13巻 63~64p 出会うことだ 出会うことでしか 料理人は前に進めない たった一人で皿に向き合っても それまでと変わらぬ自分が映るだけ 才波
城一郎
37 学び、繋がり、 ”型”を破ろう
Happy Hacking !! 水瀬いのり さんが推し の @ysknsid25 @ysknsid25.bsky.social Presented by
Kanon でした