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
jsが型安全になったっていい
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Natsuki
November 15, 2024
200
0
Share
jsが型安全になったっていい
TypeScript Meet Up #4 - TSKaigi Kansai 前夜
https://kobets.connpass.com/event/328535/
Natsuki
November 15, 2024
More Decks by Natsuki
See All by Natsuki
PHPStanのエラーをprettyにしようとしている
natsukiengr
0
22
Reactのいいなと思ったところ
natsukiengr
1
690
PHPStanをチームに内緒で開発に取り入れる方法
natsukiengr
1
1.7k
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
5.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
5
530
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Designing for Performance
lara
611
70k
Optimizing for Happiness
mojombo
378
71k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
200
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
How to make the Groovebox
asonas
2
2.1k
Transcript
jsが型安全になったっていい Natsuki
自己紹介 Natsuki 普段はLaravel + Vueで開発
自己紹介 Natsuki 普段はLaravel + Vueで開発 Vue Fes Japan 2024
JSDocで型注釈 JSDocとは JavaDocやPHPDocのようなコメント内の注釈から ドキュメントを生成するツール または、そのコメント自体 https://jsdoc.app/
JSDocで型注釈 JSDocとは JavaDocやPHPDocのようなコメント内の注釈から ドキュメントを生成するツール または、そのコメント自体 https://jsdoc.app/ /** @type {number} */
const = 0; i
JSDocで型注釈 JSDocとは JavaDocやPHPDocのようなコメント内の注釈から ドキュメントを生成するツール または、そのコメント自体 https://jsdoc.app/ @type などのタグで型情報を書くことができ、tscもこの型情報を参照して型チェ ックを行ってくれる /**
@type {number} */ const = 0; i ` `
JSDocで型注釈 JSDocとは JavaDocやPHPDocのようなコメント内の注釈から ドキュメントを生成するツール または、そのコメント自体 https://jsdoc.app/ @type などのタグで型情報を書くことができ、tscもこの型情報を参照して型チェ ックを行ってくれる これとtsconfig.jsonとtscで型チェックを行うことができる
/** @type {number} */ const = 0; i ` `
なぜtsファイルじゃないのか
なぜtsファイルじゃないのか 既存プロダクトをtsに移行したいけど、テストコードも無いしエン バグが怖い トランスパイルの時間をゼロにしたい とかとか
JSDoc(+tsc)でできること 1. 型注釈の記述 // index.ts function hello(name: string) { //
... } const LIMIT = { min: 0, max: 1000, } as const
JSDoc(+tsc)でできること 1. 型注釈の記述 // index.ts function hello(name: string) { //
... } const LIMIT = { min: 0, max: 1000, } as const // index.js /** * @param {string} name */ function hello(name) { // ... } const LIMIT = /** @type {const} */ { min: 0, max: 100, }
JSDoc(+tsc)でできること 2. 型の定義 // index.ts interface User<T> { name: string
age: number customData: T }
JSDoc(+tsc)でできること 2. 型の定義 // index.js /** * @extends T *
@typedef {{ * name: string * age: number * customData: T * }} User */ // index.ts interface User<T> { name: string age: number customData: T }
JSDoc(+tsc)でできること 3. 型のインポート・エクスポート // index.js /** * @import { User
} './index.ts' */
JSDocでできないこと 1. 条件型(Conditional Types)
JSDocでできないこと 1. 条件型(Conditional Types) type IsNumber<T> = T extends number
? true : false; type T1 = IsNumber<10>;
JSDocでできないこと 1. 条件型(Conditional Types) 型定義だけ、`.d.ts`に書けば解決 type IsNumber<T> = T extends
number ? true : false; type T1 = IsNumber<10>;
JSDocでできないこと 2. TypeScript独自の実装 Enumとかdeclareとか
JSDocでできないこと 2. TypeScript独自の実装 Enumとかdeclareとか
JSDocでできないこと 2. TypeScript独自の実装 Enumとかdeclareとか 一応`@enum`はあるが、ただの連想配列なので、TSのように値からアクセスできない
JSDocでできないこと 3. tsファイルでの型補完 JSDocの型はtsファイル内では無視される
JSDocでできないこと 3. tsファイルでの型補完 JSDocの型はtsファイル内では無視される /** * @param {string} name */
function (name) { // ... } hello Parameter 'name' implicitly has an 'any' type.
JSDocを使う上での注意
JSDocを使う上での注意 「tsファイルよりJSDocの方がオススメ!」というわけではない 単純に書く文字数が増えるので、通常のWebアプリケーションの開発にはオス スメしない
JSDocを使う上での注意 「tsファイルよりJSDocの方がオススメ!」というわけではない 単純に書く文字数が増えるので、通常のWebアプリケーションの開発にはオス スメしない tsファイルへの移行は楽じゃない JSDocはtsファイルに書いても型注釈として解釈されないので、書き直す必要 がある
JSDocを使う上での注意 「tsファイルよりJSDocの方がオススメ!」というわけではない 単純に書く文字数が増えるので、通常のWebアプリケーションの開発にはオス スメしない tsファイルへの移行は楽じゃない JSDocはtsファイルに書いても型注釈として解釈されないので、書き直す必要 がある その他使いたいエコシステムが対応してないことも
おわり