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
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.5k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
960
MobileActOsaka_250704.pdf
akaitadaaki
0
130
Operating Operator
shhnjk
1
590
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
320
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
2
17k
PO初心者が考えた ”POらしさ”
nb_rady
0
210
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
ビギナーであり続ける/beginning
ikuodanaka
3
760
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
530
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.7k
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
3
16k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
200k
Statistics for Hackers
jakevdp
799
220k
Designing for humans not robots
tammielis
253
25k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Building an army of robots
kneath
306
45k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Designing for Performance
lara
610
69k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
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ෆཁ͔ʁ
ͱ͍͏Θ͚Ͱʜ
ܕγεςϜͰखݎ͍։ൃ ͡ΊͯΈ·ͤΜ͔ʁ
ܕ͍͍ͧ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠