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
一か月半かけて、TypeScript本を写経した話
Search
ツノ
November 15, 2022
Programming
890
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
一か月半かけて、TypeScript本を写経した話
ツノ
November 15, 2022
More Decks by ツノ
See All by ツノ
エンジニア達の_完全に理解した_-コードでの契約ってなんだ_.pdf
2nofa11
1
210
Vite完全に理解した その1
2nofa11
2
320
年末年始に「chibivue」で Vueヂカラをつけた
2nofa11
0
300
「世界一流のエンジニアの思考法」 を完全に理解した
2nofa11
1
350
書籍「プログラマー脳」を完全に理解した
2nofa11
0
90
VuexからPinia移行に向けて
2nofa11
0
470
VueTestUtilbrのキホンの『キ』
2nofa11
0
180
Other Decks in Programming
See All in Programming
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
160
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
770
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
280
高専キャリア LT 発表内容
crysta1221
6
5.4k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
140
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
400
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
ソフトウェアラスタライザ
fadis
1
770
AIエージェント時代のコードレビューを設計する
nogu66
5
2.3k
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
340
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
650
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
120
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Music & Morning Musume
bryan
47
7.4k
Site-Speed That Sticks
csswizardry
13
1.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
550
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
500
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
490
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Transcript
一か月半かけて、 TS 本を写経した話 ツノ:@2nofa11
質問 どうやって開発言語の習得していますか?
「技術書」の読書術では プログラミング学習は以下の 3 つを意識する あくまで「手段」、「目的」を持つ 複数言語を習得する 動くものを作り、自分の手で確かめる
やったこと TypeScript を習得することを目的 「プロを目指す人のための TypeScript 入門」
具体的な写経内容 1. GitHub 上に Repository を作る 2. 書いてあるコードを黙々と写経&コミット コミットメッセージ:p•• 気になったとことをメモ
3. 書いたコードで気になったところは、 console.log で途中結果を出す
ルール 毎日 1 コミット以上 どんなに自明な内容でコーディングする
写経達成! 成果 ① 内容 ① 成果 ② 内容 ② 期間
9/28 ~ コミット 245 コミット ページ数 375 ページ ステップ数 1994 行 今年のコミット履歴
学んだこと例1-1 JavaScript の知識を学習(復習)することができた 分割代入(パターン = 式) ⇒ 実装できるレベルまで理解することができた const {
foo, bar } = obj; // objのプロパティを変数に const { num, obj: { bar }, } = obj; // objのプロパティがネストしていても分割代入可能 const arr = [1, 2, 3]; const { first, second, third } = arr; // 配列を変数に
学んだこと例1-2 非同期処理 ⇒Promise 文がスラスラ読めるようになった (前までは Promise チェーンへの理解が浅かった) const p =
readFile("foo.txt", "utf-8") .then(() => sleepReject(1000)) .then( (result) => { console.log("OK"); }, (error) => { console.log("E",error); );
学んだこと例2 TypeScript が「型安全である」ということが腑に落ちた! 写経前 文字列型や数値型があるから、JavaScript より安全...? 写経後 型レベルの算術やリテラル型&タプル型を駆使すると、 大規模開発でもコードの揺れがなくなる! TypeScript
の解像度を上げることができた
学んだこと例3-1 TypeScript の便利な機能を学ぶことができた 関数型の部分型関係 ⇒ 型安全かつ、自由度の高い設計が可能になる type HasNameAndAge = {
name: string; age: number; }; // S type HasName = { name: string; }; // T const fromAge = (): HasNameAndAge => ({ name: "John", age }); // 戻り値:S const f: () => HasName = fromAge; //SはTの部分型のため、戻り値TをSとみなせる
学んだこと例3-2 ジェネリクスと型引数 ⇒ 汎用性の高い関数が作成可能になる const generics = () => {
function repeat<T>(element: T, length: number): T[] { const result: T[] = []; for (let i = 0; i < length; i++) { result.push(element); } return result; } console.log(repeat<string>("a", 5)); // 文字列型でも使用可能 console.log(repeat<number>(0, 5)); // 数値型でも使用可能 };
課題 本の写経だけでは、100%理解はできない 現場のリアルなコードとは違う
学習方法自体の振り返り 登山のような達成感がある 正直、効率は悪い (自明でもコーディングする) でも、新たな発見があったりする (!!式 の仕組み等) 1 行 1
行の意味を理解して書いたのに、 忘れている部分も多数出てきている
EOL