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
TS 未経験者が 社内向け JS ライブラリを TS に置き換えている話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
pvcresin
November 20, 2019
Technology
420
0
Share
TS 未経験者が 社内向け JS ライブラリを TS に置き換えている話
https://oweb.connpass.com/event/149918/
#OWEB で発表した内容になります。
pvcresin
November 20, 2019
More Decks by pvcresin
See All by pvcresin
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
1
130
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
910
text-box-trim について 1 分で
pvcresin
0
140
Web IDEの進化とそれを支える技術
pvcresin
0
120
ステップアップOSSコントリビュート
pvcresin
0
490
Webアプリケーションのアーキテクチャパターンから読み解くNext.js
pvcresin
0
440
Eight WebフロントエンドのDX向上に関する取り組み
pvcresin
0
200
React はじめの一歩
pvcresin
1
270
適当に教える最近のフロントエンド開発第一歩
pvcresin
0
180
Other Decks in Technology
See All in Technology
Fabric MCPの紹介と使い分け
ryomaru0825
1
110
GKE Agent SandboxでAIが生成したコードを 安全に実行してみた
lamaglama39
0
160
AndroidアプリとCopilot Studioの統合
nakasho
0
190
ボトムアップの改善の火を灯し続けろ!〜支援現場で学んだ、消えないための3つの打ち手〜 / 20260509 Kazuki Mori
shift_evolve
PRO
0
190
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
0
120
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
270
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
390
音声言語モデル手法に関する発表の紹介
kzinmr
0
150
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
500
需要創出(Chatwork)×供給(BPaaS) フライホイールとMoat 実行能力の最適配置とAI戦略
kubell_hr
0
1.6k
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
170
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.4k
Featured
See All Featured
The browser strikes back
jonoalderson
0
1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.9k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
340
Building Applications with DynamoDB
mza
96
7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Amusing Abliteration
ianozsvald
1
160
A better future with KSS
kneath
240
18k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
110
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
280
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
Transcript
TS 未経験者が 社内向け JS ライブラリを TS に置き換えている話 @pvcresin OWEB #9
鳥山 らいか / Raika Toriyama Sansan 株式会社 Eight 事業部 フロントエンドエンジニア @pvcresin
JavaScript に静的型付けがついた言語 TypeScript とは
• API の定義ファイルをパースし、フロントエンドで使うデータ形式の JS ファイルを自動生成 • 安全で硬い作りにしたい 社内向けライブラリ フロントエンド バックエンド
API の定義ファイル
やったこと
Step1: 学ぶ
• 公式ドキュメント https://www.typescriptlang.org/docs/home.html • Qiita:TypeScript の型入門 https://qiita.com/uhyo/items/e2fdef2d3236b9bfe74a • 記事:がんばらない TypeScript
https://employment.en-japan.com/engineerhub/entry/2019/04/16/103000 • 書籍:実践 TypeScript 吉井 健文 (著) 参考になったもの
Step2: 準備
• 1ファイルずつ置き換えていく • 型チェックと変換には tsc コマンドを採用 導入方法を決める tsc いままで これから
/src /src /compiled /dist /dist
Step3: 置き換え
拡張子でルールを分けるよう変更 ESLint の設定
場所 • よく薦められるのはテストコードから • 今回はライブラリ本体のコードから始めた • テストコードがない部分があった • 本体のコードが何をしているか不明な場所が多かった ファイル
• 外部のライブラリのみ import しているもの • import がないもの • 他のファイルを import しているもの 置き換える順番
• DefinitelyTyped:http://definitelytyped.org/ ◦ @types/<package name> で探す • npm:https://www.npmjs.com/ ◦ 型定義している
package がないか探す • 自分で定義 ◦ デフォルトだと src/@types/*.d.ts 型定義ファイル
導入してよかったこと
• 型安全でない実装がエラーにより可視化された • JS の 暗黙的な型変換 に助けられていた部分が浮き彫りに • 関数がやるべきことに向き合えた •
場合によっては分割 • 命名の再考 • ある種のテスト代わりになった 導入してよかったこと
現状
None
俺たちの戦いはこれからだ