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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
pvcresin
November 20, 2019
Technology
0
410
TS 未経験者が 社内向け JS ライブラリを TS に置き換えている話
https://oweb.connpass.com/event/149918/
#OWEB で発表した内容になります。
pvcresin
November 20, 2019
Tweet
Share
More Decks by pvcresin
See All by pvcresin
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
870
text-box-trim について 1 分で
pvcresin
0
130
Web IDEの進化とそれを支える技術
pvcresin
0
120
ステップアップOSSコントリビュート
pvcresin
0
480
Webアプリケーションのアーキテクチャパターンから読み解くNext.js
pvcresin
0
430
Eight WebフロントエンドのDX向上に関する取り組み
pvcresin
0
190
React はじめの一歩
pvcresin
1
260
適当に教える最近のフロントエンド開発第一歩
pvcresin
0
170
Other Decks in Technology
See All in Technology
マネージャー版 "提案のレベル" を上げる
konifar
17
12k
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.3k
Devinを導入したら予想外の人たちに好評だった
tomuro
0
880
ソフトウェアアーキテクトのための意思決定術: Create Decision Readiness—The Real Skill Behind Architectural Decision
snoozer05
PRO
29
9k
A Gentle Introduction to Transformers
keio_smilab
PRO
1
120
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
130
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
44k
「使いにくい」も「運用疲れ」も卒業する UIデザイナーとエンジニアが創る持続可能な内製開発
nrinetcom
PRO
1
780
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
GitLab Duo Agent Platform + Local LLMサービングで幸せになりたい
jyoshise
0
100
Databricksアシスタントが自分で考えて動く時代に! エージェントモード体験もくもく会
taka_aki
0
320
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
95k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Speed Design
sergeychernyshev
33
1.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
The Cult of Friendly URLs
andyhume
79
6.8k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
850
My Coaching Mixtape
mlcsv
0
63
Prompt Engineering for Job Search
mfonobong
0
180
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
490
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Game over? The fight for quality and originality in the time of robots
wayneb77
1
130
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
俺たちの戦いはこれからだ