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
Provide/Inject で TypeScript の恩恵を受ける方法
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
SAW
September 25, 2024
Programming
180
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Provide/Inject で TypeScript の恩恵を受ける方法
Vue 勉強会 in 大阪 の発表資料です。
SAW
September 25, 2024
More Decks by SAW
See All by SAW
Effortless API Documentation with Scribe
azuki
0
73
Laravelで手軽にAPIドキュメントを生成する ― Scribe活用術
azuki
0
43
🪝 便利な Property Hooks を 使ってみよう 🪝
azuki
0
81
決済システム超初心者が Stripe に入門している話
azuki
0
110
React Hook Form と Zod によるフォームバリデーション
azuki
0
72
PHP で form-data を POST 以外のメソッドで受け取るには?
azuki
0
85
PHP で学ぶ OAuth 入門
azuki
2
1.4k
EditorConfig を使ってみよう
azuki
1
120
Symfony でサクッと作る REST API サーバー
azuki
1
270
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
Contextとはなにか
chiroruxx
1
330
AIで効率化できた業務・日常
ochtum
0
140
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
The NotImplementedError Problem in Ruby
koic
1
820
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
140
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.7k
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Odyssey Design
rkendrick25
PRO
2
700
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
430
Chasing Engaging Ingredients in Design
codingconduct
0
220
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Curse of the Amulet
leimatthew05
1
13k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Transcript
1SPWJEF*OKFDUͰ5ZQF4DSJQUͷ ԸܙΛड͚Δํ๏ 7VFษڧձJOେࡕ 4"8
$(whoami) ࢯ໊Ճ౻फҰ ࡀ ϋϯυϧωʔϜ4"8 9 چ5XJUUFS !B[VLJ@FBUFS ؔͷ*5ΤϯδχΞίϛϡχςΟͷ͔͠୲ ࣗশ
େࡕࡏॅɾѪग़ ಘҙ8FCΞϓϦέʔγϣϯ։ൃ 7VF -BSBWFM ʮྫྷ͠த՚͡Ίͨ͠ʯฉ͘ͷʹ ʮྫྷ͠த՚ऴΘΓ·ͨ͠ʯฉ͔ͳ͍ͷ ͳͥͩΖ͏ ࠓͷ໎ݴ
ࢠଙͷίϯϙʔωϯτʹσʔλΛ͢ 7VF͔Β1SPWJEF*OKFDUͱ͍͏ػೳ͕Ճ ࢠଙͷίϯϙʔωϯτʹσʔλΛ͢߹ʹpropsͰόέπϦϨʔʹͳΔ 1SPWJEF*OKFDUΛར༻͢Δ͜ͱͰpropsͷόέπϦϨʔΛղফ ΞϓϦέʔγϣϯϨϕϧͰ1SPWJEFΛར༻͢Δ͜ͱͰ%*Λ࣮ݱ શͯͷίϯϙʔωϯτͰ*OKFDUΛ͢Δ͜ͱͰσʔλΛऔಘՄೳ ͋ΔίϯϙʔωϯτͰ1SPWJEFͨ͠߹ࢠଙͷίϯϙʔωϯτͰͷΈ*OKFDUՄೳ
1SPWJEF*OKFDUͷΠϝʔδ Header Layout Root Main Footer ArticleList ArticleEditor provide('user', me)
inject('user') inject()Մೳͳൣғ ઌͷίϯϙʔωϯτͰ provide()͢ΔσʔλΛొ ࢠଙͷίϯϙʔωϯτͰ inject()ͯ͠σʔλΛऔಘ
1SPWJEF*OKFDUͰ5ZQF4DSJQUͷԸܙΛड͚Δ Ωʔ͕จࣈྻͷ߹inject() ͷฦ٫ܕunknown inject()Ͱऔಘͨ͠σʔλͷܕΛࢦఆ͢ΔʹΩϟετ͕ඞཁ provide()ʹ͞ΕͨσʔλܕͱҟͳΔܕʹΩϟετͯ͠ΤϥʔʹͳΒͳ͍ ΩʔͷจࣈྻΛUZQP͍ͯͯ͠੩తղੳͰΤϥʔΛݕͰ͖ͳ͍ ΩʔʹInjectionKey<T>Λར༻͢Δ͜ͱͰܕใΛऔಘ inject()ͷฦ٫ܕT|undefinedʹͳΓΩϟετ͕ෆཁ ܕͷෆ߹ΩʔͷUZQPͳͲ͕͋Δ߹ʹ੩తղੳͷԸܙΛड͚ΒΕΔ
InjectionKey<T>ͷར༻ Layout Main ArticleEditor export const userInjectionKey = Symbol() as
InjectionKey<User>; import { userInjectionKey } from './InjectionKey'; const me: User = { name: 'Jack' }; provide(userInjectionKey, me); import { userInjectionKey } from './InjectionKey'; const me = inject(userInjectionKey); console.log(me?.name); Layout.vue ArticleEditor.vue InjectionKey.ts InjectionKey<User>ʹΩϟετͨ͠ SymbolΛFYQPSU inject()ͷฦ٫ܕ User|undefinedͱͳΔ
·ͱΊ 1SPWJEF*OKFDUʹ͍ͭͯͷ֓ཁΛઆ໌ 1SPWJEF*OKFDUͰ5ZQF4DSJQUͷԸܙΛड͚Δํ๏Λհ InjectionKey<T> ΛΩʔʹར༻͢Δ͜ͱͰ࣮ݱՄೳ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠