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
TypeScript - road to static (typing) ojisan -
Search
dojineko
December 07, 2017
Technology
4
1.6k
TypeScript - road to static (typing) ojisan -
dojineko
December 07, 2017
Tweet
Share
More Decks by dojineko
See All by dojineko
iOSのWebViewとClipboardAPI / WebView and ClipboardAPI on iOS
dojineko
0
65
最近のUnityとVRChat / About Unity and VRChat recently
dojineko
0
150
WebXRでポートフォリオを作ろう/Let's make your portfolio with WebXR!
dojineko
0
160
ペパボ ホスティング事業部のWebフロントエンドについて 2022 / About Web Frontend of Pepabo Hosting division 2022
dojineko
1
9.3k
Viteはいいぞ/Vite is Good
dojineko
1
740
はじめてでもできた!VR登壇への道 / Let's VR speech!
dojineko
0
430
gRPC-WEBを使ったWEBアプリ開発/Development web-app with gRPC-WEB
dojineko
1
940
もう俺には関係なくないTypeScript/Our TypeScript
dojineko
3
350
TypeScript ではじめる Clean Architecture / Let's start Clean Architecture with TypeScript
dojineko
2
3.3k
Other Decks in Technology
See All in Technology
How Do I Contact HP Printer Support? [Full 2025 Guide for U.S. Businesses]
harrry1211
0
120
Delegating the chores of authenticating users to Keycloak
ahus1
0
140
ゼロからはじめる採用広報
yutadayo
3
950
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
160
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.8k
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
130
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
1
110
20250705 Headlamp: 專注可擴展性的 Kubernetes 用戶界面
pichuang
0
270
Model Mondays S2E04: AI Developer Experiences
nitya
0
140
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
200
AWS認定を取る中で感じたこと
siromi
1
190
KubeCon + CloudNativeCon Japan 2025 Recap Opening & Choose Your Own Adventureシリーズまとめ
mmmatsuda
0
280
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Six Lessons from altMBA
skipperchong
28
3.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Automating Front-end Workflow
addyosmani
1370
200k
Building Applications with DynamoDB
mza
95
6.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
dSPBEUPTUBUJD UZQJOH PKJTBOd !EPKJOFLP(.01FQBCP *OD 5FDI.5( 5ZQF4DSJQU
5ZQF4DSJQUͰ ੩తܕ͚͓͡͞ΜϥΠϑ
࣍ w5ZQF4DSJQUͱʁ w5ZQF4DSJQUͷίί͕ศར w5ZQF4DSJQUͷͭΒΈ ͱରԠࡦ wͪΐͬͱͣͭ࢝ΊΔ5ZQF4DSJQU
5ZQF4DSJQUͱʁ
5ZQF4DSJQU w.JDSPTPGUൃͷ੩తܕͷBMU+4 w+BWB4DSJQUͷεʔύʔηοτͰ͋Γɺ ͯ͢ͷ+BWB4DSJQU༗ޮͳ 5ZQF4DSJQUͱݴ͑Δ wίϯύΠϥͷػೳʹґΔίʔυิͳ ͲͷΤσΟλࢧԉͰָʹ։ൃ͕Ͱ͖Δ wIUUQTXXXUZQFTDSJQUMBOHPSH
ͳΜͰ5ZQF4DSJQU
ϚωʔδυΫϥυͰͷ࠾༻ཧ༝ w ϚωʔδυΫϥυϑϩϯταΠυ͔ΒαʔόʔαΠυ·ͰҰ؏ͯ͠ +BWB4DSJQUͰ࣮͞Ε͍ͯΔ w ։ൃ͕ਐΉʹ࿈Εͯ૿͍͑ͯ͘υΩϡϝϯτԽ͞Ε͍ͯͳ͍+BWB4DSJQU w +4%PD +BWB4DSJQUͷυΩϡϝϯτπʔϧ ະಋೖ
w 5ZQF4DSJQUͷಋೖ࣌ςετ͜Ε͔Βॻ͍͍ͯ͘ͱ͍͏ϑΣʔζ w ͦ͜Ͱ5ZQF4DSJQUʹΑΔɺ੩తܕ͚Λར༻ͨ͠ߏจղੳɺίʔυิͳͲͷ ΤσΟλࢧԉػೳΛ׆༻͢Δ w ʮίʔυΛಡΈղ͔ͳͯ͘ɺࠓ͔Β͡ΊΒΕΔ։ൃڥʯ͕ΰʔϧʂ
ϚωʔδυΫϥυͰͷ࠾༻ཧ༝ w5ZQF4DSJQU(PPHMFࣾͰར༻Մೳͳݴޠʹ࠾༻͞Εͨ w IUUQXXXQVCMJDLFZKQCMPHHPPHMFUZQFTDSJQUOHDPOG@IUNM w $$ ɺ+BWBɺ+BWB4DSJQUɺ1ZUIPOɺ(Pʹଓ͍ͯͷ࠾༻ w ͕͔ΓͰݕ౼ɾݕূΛͯ͠ͷ݁Ռͱͷ͜ͱ wνʔϜ։ൃʹԙ͍ͯɺܕʹΑΔ੍͕ίʔυͷ࣭ͷ୲อʹɺ
͋Δఔ༗ޮʹಇ͘ݟࠐΈ͕͋ͬͨ wίϯύΠϧޙͷίʔυਓ͕ಡΊΔΑ͏ͳܗʹͳ͍ͬͯΔ
ίʔυΛಡΈղ͔ͳͯ͘ ࠓ͔Β࢝ΊΒΕΔ։ൃڥ
ܕγεςϜ੩తղੳ ੩తղੳ ඇ࣮ߦ࣌ʹ͓͚ΔܕใΛ͍࣋ͬͯΔͷͰ ͋ΔఔςετΛॻ͔ͣͱίʔυΛ࣮ߦͤͣ ίϯύΠϧ࣌ʹϛεʹؾ͚ͮΔʂ ʜ͕ɺܕʹΑͬͯอূ͞ΕΔͷͰى͜Γʹ͍͘ʂ ؒҧͬͯίϯύΠϥ͕ࢦఠͯ͘͠ΕΔʂະવʹ͕ΕΔʂ w ͏͔ͬΓΛظ͢ΔมʹจࣈྻΛೖΕͨʜ w
͕ؔظ͍ͯ͠ͳ͍ҾΛͨ͠ʜ w ܕ͕֬ఆ͠ͳ͍ঢ়ଶͰࢀরͪ͠Ό࣮ͬͯߦ࣌ʹΤϥʔʜ
ίʔυิ ίʔυิ ίϯύΠϥʹΤσΟλࢧԉػೳ͕͍͓ͭͯΓ ରԠͨ͠ΤσΟλ֦ுػೳΛಋೖ͢Δͱ ܕใΛݩʹೖྗީิΛิͯ͘͠ΕΔʂ ʜ͕ɺυΩϡϝϯτΛݟͣͱ͔Δʂ ༻ํ๏·Ͱग़ͯ͘ΔʂλΠϓݮָͬͯͰ͖Δʂ w DMBTT9:;ͬͯԿͷϝιου͕͚͋ͬͨͬʜ w
͜ͷϝιουͬͯԿܕ͕ฦͬͯ͘ΔΜ͚ͩͬʜ w ͦͦԿͯͨ͠Μ͚ͩͬʜ
੩తܕ͚ɾಈతܕ͚ w੩తղੳίʔυิɺ*%&ɺ੩తܕ͖ݴޠͷίϯύΠϥ͔Β ͢ΔͱׂΓͱҰൠతͳػೳ ʹͳͬͨ w͔͠͠ͳ͕ΒզΒ͕+BWB4DSJQUಈతܕ͖ݴޠͳͷͰ࣮ߦ͢Δ· Ͱܕͷঢ়ଶ͕ෆఆɺ͘͠ਪ͢Δ͜ͱ͕͍͠ w5ZQF4DSJQUಈతܕ͖ݴޠͷ+BWB4DSJQUʹܕͷ֙Λணͤͯ੩త ܕ͚ͱͨ͠ݴޠ
5ZQF4DSJQUͷΠϝʔδ 5ZQF4DSJQU+BWB4DSJQUͷ֙ ੩తͳܕΛ༩͑Δͱڞʹɺ ศརͳث༩͑ͯ͘ΕΔɻ ੩తղੳɺίʔυิFUDʜ 5ZQF4DSJQU֙ͳͷͰ͋͘·Ͱ ࣮ߦ͞ΕΔͷ+BWB4DSJQU +4ͷ৺ΛΕͯΠέφΠɻ ݹࣄهʹͦ͏ॻ͔Ε͍ͯΔ
Generics Interface Abstract Class Async/Await Enum Namespace Decorator Promise ΄͔ʹ+4ʹແ͍
ศརͳػೳ͕ͨ͘͞Μʂ
ଟ͗ͯ͢આ໌͖͠Εͳ͍ͷͰࠓճলུʜ
5ZQF4DSJQU·ͱΊ w5ZQF4DSJQU+BWB4DSJQUΛ੩తܕ͚ͰهࡌͰ͖ΔBMU+4ͩΑ wΤσΟλࢧԉػೳ͋ͬͯͱͬͯศརʂ w੩తܕ͚ͳͷͰಈతܕ͖ݴޠʹ͋Γ͕ͪͳɺ ͜·͔ͳϛεେίϯύΠϥ͕ࣄલʹࢦఠͯ͘͠ΕΔΑ wଞʹ+BWB4DSJQUΛϕʔεʹศརͳػೳ͕ࢁ༻ҙ͞ΕͯΔΑ
5ZQF4DSJQUͷͭΒΈʜ ͱରԠࡦ
ྫܕఆ͕ٛͳ͍
5ZQF4DSJQUʹԙ͚ΔܕγεςϜ w5ZQF4DSJQU੩తܕ͚Ͱͳ͍+BWB4DSJQUʹܕΛ࣋ͪࠐΉΈ w༧Ί͍͍ͨ֎෦ϥΠϒϥϦͷܕఆٛ͞Ε͍ͯΔඞཁ͕͋Δ wK2VFSZ 3FBDU "OHVMBS 7VFKT /PEFͷίΞϥΠϒϥϦ FUDʜ wϝδϟʔͳͷ%FpOJFUMZ5ZQFEͰܕఆ͕ٛఏڙ͞Ε͍ͯΔ
wϥΠϒϥϦ͕ࣗܕఆٛใΛ͍࣋ͬͯΔ߹ w5ZQF4DSJQU+4%PD͔ΒܕใΛऔΕΔ
OQNͰܕఆٛϑΝΠϧΛ औಘͯ͑͠Δʂ Λ͑Δ ϥΠϒϥϦͷܕఆٛΛऩ ༗ࢤ͕όϯόϯߋ৽ͯ͘͠ΕΔ
Ͱɺܕఆ͕ٛ୭ʹఏڙ͞Εͯͳ͍ϥΠϒϥϦΛ͏γʔϯͰʜʁ
͠ܕఆ͕ٛͳ͔ͬͨΒʁ wʲύλʔϯʳܕఆٛΛॻ͘ʂ wܕఆٛಠࣗͰॻ͘͜ͱͰ͖ΔͷͰͬ͘͞Γॻ͍ͯ͠·͏ύλʔϯ wOQNͰެ։͞ΕͯΔͷͷܕఆٛΛॻ͍ͨΒ%FpOJFUMZ5ZQFEʹ ϓϧϦΫΤετΛૹΔͱྑ͍ ͪΖΜૹΒͳͯ͘0,
ܕఆٛͷແ͍ϥΠϒϥϦͷྫ w จࣈྻΛCPPMFBOʹม͢ΔZOͱ͍͏ύοέʔδ w ڥม TUSJOH ͔ΒCPPMFBOʹม͍ͨ͠ʂ w ͔͠͠ͳ͕Β͜Εʹܕఆ͕ٛఏڙ͞Ε͍ͯͳ͍ w
%FpOJFUMZ5ZQFEʹܕఆ͕ٛͳ͍ w +4%PD͍ͭͯͳ͍ ΞϨ͑ͨʜ w ܕఆ͕ٛͳ͍ͷͰ5ZQF4DSJQU্Ͱ ม݁ՌΛCPPMFBOͱͯ͠ड͚औΕͳ͍ʜ w શ෦BOZܕʹͳΔʜ͔ͳ$
ܕఆٛΛॻ͜͏ʂ
ܕఆٛΛॻ͘Αʂ w ͜ΕͰ5ZQF4DSJQUͰܕΛ࣋ͬͨঢ়ଶͰZOΛ͏͜ͱ͕Ͱ͖Δ w ܕఆٛύοέʔδͷͯ͢ͷ࣮Λཏ͢Δඞཁͳ͍ lZOzͱ͍͏໊લͷϞδϡʔϧ͕͋Δ͜ͱΛ ఆٛ͢Δ Ϟδϡʔϧ㲈OQNQBDLBHF ZOͱ͍͏͕ؔ͋ͬͯɺҾΛͭऔΓɺ ΓCPPMFBOͰฦͬͯ͘Δ͜ͱΛ
ఆٛ͢ΔɻΈͰ+4%PD͚ΒΕΔɻ ZO͕FYQPSU͞Ε͍ͯΔ͜ͱΛఆٛ͢Δ JNQPSUͨ࣌͜͠ͷؔΛ͑Δͱ͍͏ఆٛ
ܕఆٛΛॻ͍ͨΑʂ ఆٛͨ͠Ҿͱܕͷใ͕ิ͞ΕΔ Ҿͷܕͱ߹Θͳ͍߹ Τϥʔͱͯ͠ݕ͞ΕΔΑ͏ʹͳΔ
͠ܕఆ͕ٛͳ͔ͬͨΒʁ wʲύλʔϯʳBOZܕͰಀ͛Δʂ wBOZܕͰ͍͔ͳΔܕڐ༰ͯͦ͠ͷ෦͚ͩΛᛉΔύλʔϯ w͕࣌ؒͳ͍߹ɺܕఆٛΛॻ͘͜ͱʹਫ਼௨ͯ͠ͳ͍߹༗ޮ
BOZܕͰಀ͛Δύλʔϯ ܕ໊ ྫ 4USJOH จࣈྻܕ l)FMMPXPSMEz /VNCFS ܕ #PPMFBO
ೋܕ USVF GBMTF "SSBZ5 ྻܕ <lBz lCz lDz>"SSBZTUSJOH /VMM OVMMܕ OVMM "OZ BOZܕ ҙͷܕΛڐ༰͢Δܕ w 5ZQF4DSJQUʹԼهͷΑ͏ͳܕ͕͋Δ Ұ෦ൈਮ
BOZܕͰಀ͛Δύλʔϯ ܕ໊ ྫ 4USJOH จࣈྻܕ l)FMMPXPSMEz /VNCFS ܕ #PPMFBO
ೋܕ USVF GBMTF "SSBZ5 ྻܕ <lBz lCz lDz>"SSBZTUSJOH /VMM OVMMܕ OVMM "OZ BOZܕ ҙͷܕΛڐ༰͢Δܕ w 5ZQF4DSJQUʹԼهͷΑ͏ͳܕ͕͋Δ Ұ෦ൈਮ
BOZܕͰಀ͛Δύλʔϯ w BOZܕจࣈ௨ΓͳΜͰ͋Γͷܕ จࣈྻͰɺͰɺVOEFpOFEͰ w $$ ͷWPJE (PͷJOUFSGBDF\^ʹ͍ۙ֓೦ w
ܕఆٛͷແ͍ϥΠϒϥϦ·Δ͝ͱBOZܕͱ͢ΕίϯύΠϧΛ௨͢͜ͱ͕Ͱ͖Δ w BOZܕʹͳͬͨͷܕͷ੍Λ֎ΕΔ w ܕͷ੍Λ֎ΕΔͷͰίϯύΠϥʹࢧԉͯ͠Β͑ͳ͘ͳΔ w ۭ͍ͨ࣌ؒͰ͏ൣғ͚ͩͰܕఆٛΛॻ͘ͷ͕͓͢͢Ίʂ
ͪΐͬͱͣͭ͡ΊΔ 5ZQF4DSJQU
Ͳ͏ͬͯಋೖ͢Δ͔ʁ w5ZQF4DSJQU͕ྑ͍ͷΘ͔͚ͬͨͲͲ͏ͬͯಋೖ͢Δͷʁ w ͢ͰʹK2VFSZͰॻ͍ͨίʔυ͕ͨͬΓ͋ΔΜ͚ͩͲʜ w શ෦5ZQF4DSJQUʹ͠ͳ͍ͱͩΊͳΜͰ͠ΐʁ w#BCFM͑ͳ͍ͷʁ w 1SPNJTFͱ͔BTZODBXBJU w
ڧྗͳ#BCFMϓϥάΠϯ ܕͱ͔Ͳ͏Ͱ͍͍͔Β ࣮ͤͯ͞ʜ
طଘͷίʔυʹগͮͭ͠ೖΕ͍ͯ͘ w5ZQF4DSJQU+BWB4DSJQUͷʮεʔύʔηοτʯ wཧΤϥʔΛؚ·ͳ͍ݶΓɺ֦ுࢠΛม͑Δ͚ͩͰίϯύΠϧͰ͖Δ w%FpOJFUMZ5ZQFEͰެ։͞Ε͍ͯΔܕఆٛͬͯɺ ঃʑʹॻ͍͍ͯ͘ͷ͕खܰͰखݎ͍ w ٧·ͬͨΒʮͱΓ͋͑ͣBOZܕΛͬͯΈΔʯͱ͍͏ΓํΞϦ w5ZQF4DSJQU͔Β+BWB4DSJQUΛJNQPSUͯ͠͏͜ͱͰ͖Δ w5ZQF4DSJQUΛͱΓ͋͑ͣೖΕͯΈΔ͚ͩͳΒ͙͢ʹͰ͖Δʂ
+4͔Β54ͷҠߦྫ w ΄ͱΜͲॻ͖͑ͣʹҠߦ͢Δ͜ͱ͕Ͱ͖ͨ Ұ෦ྫ֎͋Γ w Ҡߦͷ్தͰEPDVNFOUHFU&MFNFOU#Z*Eͷ݁Ռ͕OVMMʹͳΓ͏Δͱ͍͏ ߟྀ͕ൈ͚͍ͯΔ͜ͱΛݕͨ͠ͷͰमਖ਼ͨ͠ Γ͕)5.-&MFNFOUPSOVMMͷͨΊͦͷ··ͩͱίϯύΠϧΤϥʔʹͳΔ
#BCFMͲ͏͢Δʁ w5ZQF4DSJQUͰ࣮ߦڥΛࢦఆͯ͠ίϯύΠϧ͢Δ͜ͱ͕Ͱ͖Δ w &4&4ɺ&4/FYU&4ͳͲະདྷͷػೳΛݱࡏʹ࣋ͪࠐΊΔ w 1SPNJTFɺ"TZOD"XBJUͳͲͷओཁͳػೳΛτϥϯεύΠϧ͢ΔͨΊʹ #BCFMΛಋೖ͍ͯ͠ΔͳΒ5ZQF4DSJQU#BCFMͷ্ҐޓͱͳΓಘΔ w "TZOD"XBJUͷ&4ͷίϯύΠϧ5ZQF4DSJQUͰରԠࡁΈ w
ͦͷଞͷ࣍ੈͷ&$."4DSJQUͷҰ෦ઌߦ࣮ͷαϙʔτ͞Ε͍ͯΔ ˞#BCFMʜ+4ͷະདྷͷػೳΛݱࡏ͋ΔػೳͰ࠶ݱ͢ΔͨΊͷπʔϧ ˞&$."4DSJQUʜ+BWB4DSJQUͷඪ४༷ɻίίͰʮ͍ΘΏΔ+4ͷ͜ͱʯ͘Β͍ͷೝࣝͰ0,
#BCFMͲ͏͢Δʁ w#BCFM1PMZpMMͷΑ͏ͳ࣮ߦڥͷࠩΛຒΊΔػೳଘࡏ͠ͳ͍ w ͔͠͠ͳ͕Β#BCFMͱͷซ༻ࣗମՄೳ w ซ༻͢Δͱ5ZQF4DSJQUͷίϯύΠϧͱ#BCFMͷτϥϯεύΠϧͰ ഒ͕͔͔࣌ؒΔͷͰ͓͢͢Ί͠ͳ͍ w Ͳ͏ͯ͠ඞཁͳΒ#BCFM1PMZpMMΛผ్ಡΈࠐΜͰซ༻͢Δͷ͕ྑͦ͞͏ wݴޠػೳΛେ͖͘ม͑ΔΑ͏ͳ#BCFMϓϥάΠϯͷΑ͏ͳػೳແ͍
w &$."4DSJQUඪ४ͷ"1*͕ॆ࣮͖͍ͯͯ͠ΔͷͰΓସ͑Λݕ౼͢ΔͳͲ
ͪΐͬͱͣͭ͡ΊΔ54·ͱΊ w5ZQF4DSJQUͷҠߦͦΜͳʹ͍͜͠ͱͰͳ͍Α w +BWB4DSJQUͷεʔύʔηοτͳͷͰߏจ্ҐޓʹͳΔ w ͨ͘͞ΜͷܕఆٛϑΝΠϧ͕ఏڙ͞Ε͍ͯΔ w Ҡߦͯ͠Δ్தͰؾ͖͕ͮ͋Δ͔ʁ w#BCFMΛߴʹ༻͍ͯ͠Δͱ͖ҙͯ͠Ͷ w
Ұ෦ͷ৽͍͠ػೳΛ͍͍͚ͨͩͳΒ#BCFMෆཁ͔ʁ
ͱ͍͏Θ͚Ͱʜ
ܕγεςϜͰखݎ͍։ൃ ͡ΊͯΈ·ͤΜ͔ʁ
ܕ͍͍ͧ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠