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
本当は怖い@types/node
Search
Yoshiaki Togami/戸上義章
December 14, 2023
0
100
本当は怖い@types/node
https://nihonbashi-js.connpass.com/event/301794/
Yoshiaki Togami/戸上義章
December 14, 2023
Tweet
Share
More Decks by Yoshiaki Togami/戸上義章
See All by Yoshiaki Togami/戸上義章
Rust製TypeScriptコンパイラ stcの現状と今後
yoshiaki_togami
0
690
JavaScript Testing Framework: Under the Hood(JSConfJP2022)
yoshiaki_togami
0
3.8k
Featured
See All Featured
Faster Mobile Websites
deanohume
300
30k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
188
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
KATA
mclloyd
16
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Creatively Recalculating Your Daily Design Routine
revolveconf
211
11k
Building Adaptive Systems
keathley
32
1.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
8
1.3k
How to Ace a Technical Interview
jacobian
273
22k
Transcript
本当は怖い@types/node 2023/12/14 Nihonbashi.js #8
$WHOAMI - 4月から社会人フロントエンドエンジニア - コンパイラとか好き
宣伝 12/16にFrontend Testingについて話します!14:00-15:30です
注意 - ほとんどの人にとって雑学 - 実用上の問題になることは皆無 - “tscを代替を作るんだ!!”という方には若干役立つかもしれません😇
@types/node使ってますか?
@types/node - Node.jsのためのTypeScript型定義を提供するnpmパッケージ - console.logの型やprocessの型など
index.d.ts(エントリーポイント) - 上から順に読み込まれる - globals.d.ts - 後続のファイルで使うglobal変数の型定義の集まりのはず。。
globals.d.ts(抜粋) - declare global {} - Moduleでグローバル変数を宣言できる 特別な構文(Global Augmentation) -
一部の型が後続ファイル中の宣言を暗 黙に(明示的なimport/requireなしで) 参照している😇
暗黙依存三銃士 in globals.d.ts
Q:なぜ暗黙の参照が可能だったのか A: (理由はよくわからないが) 別ファイルのglobal{} 内で 宣言されている型を参照して いたから コレを参照している event.d.ts
まとめ 🤔 見た目上の依存関係
まとめ 🤔🤔🤔 実際の依存関係 🤔🤔🤔
誰が困るのか - tscをRIIRしたい方 - 並列解析できない - @typesの普及具合から対応は必須 - global{}だけ先に解析する? -
Module loader書き直しレベル
最後に - 実装の問題というより既存のnodeのAPIを後付けで表現しようとした結果? - そもそもtscはどう解析している? - tscや@types事情に詳しい方がいたら教えてくださいmm