୭
w Ԟݡଠ!PLVOPLFOUBSP
w ΫϨεΣΞදɺ
ΤϯδχΞ
w "OHVMBSຊϢʔβʔձ
OHLZPUP
Slide 3
Slide 3 text
ࣥච
Slide 4
Slide 4 text
࣍
w ͍·ɺ
5ZQF4DSJQUΛ࠾༻͢Δ͜ͱ͕ࣗવͰ͋Δཧ༝
w ੲͷ5ZQF4DSJQUΛͬͯΔਓͷΑ
͘
͋Δޡղ
wʮม͍͑ͯ͘༐ؾʯ
ͱ
Slide 5
Slide 5 text
͍·ɺ
5ZQF4DSJQUΛ࠾༻͢Δ͜ͱ͕
ࣗવͰ͋Δཧ༝
Slide 6
Slide 6 text
5ZQF4DSJQU
w 5ZQF4DSJQUϓϩάϥϛϯάݴޠ
w +BWB4DSJQUͷεʔύʔηο
τݴޠ
w ੩తܕ͚Λಋೖ
w ίϯύΠϧ࣌ʹܕݕࠪ
w ʹˠݱࡏ
w .JDSPTPGU͕ओಋͰ։ൃ͢ΔΦʔϓϯιʔε
Slide 7
Slide 7 text
ίϯύΠϧ͕ඞཁ
w 5ZQF4DSJQUϑΝΠϧtscͰίϯύΠϧ͢Δ͜ͱͰ
+BWB4DSJQUϑΝΠϧͱͯ͠ग़ྗ
w +BWB4DSJQUݩʑΠϯλϓϦλͰಈ࡞͢Δݴޠ
w ॻ͍͙ͯ͢ʹϒϥβͰಈ࡞
w ͦΕͳͷʹɺ
ͳͥίϯύΠϧ͕ඞཁͳݴޠͱͯ͠ੜ·Εͨ
ʁ
Slide 8
Slide 8 text
"MU+4ˠ#BCFM
w ͪΐͬͱ
ͨ͠ྺ࢙ͷ
w $PGGFF4DSJQU
w 5ZQF4DSJQU
w #BCFM
wʮKT͡Όͳ͍ଞͷϑΝΠϧʯ
Λ+BWB4DSJQUϑΝΠϧʹม
w มޙͷϑΝΠϧ͕ಈ࡞͢ΕΑ͍ͱ͍͏ߟ͑ํ
Slide 9
Slide 9 text
Ϟδϡʔϧ
w αʔόʔαΠ
υ͚+BWB4DSJQUͷ࣮ߦڥ/PEFKTੜ
w $PNNPO+4
w +BWB4DSJQUΛϞδϡʔϧ୯ҐͰࡉ͔͚͘Δػӡ
w &4
w &4.PEVMFT
w NPEVMFJNQPSUFYQPSU·ΘΓ͕
ʮߏจ༷ͷΈʯ
ܾ·ͬͨ
Slide 10
Slide 10 text
XFCQBDL
w OQN
w /PEF1BDLBHF.BOBHFS
w ͱ/PEFKT༻ͷϞδϡʔϧґଘؔཧ༻ͷπʔϧ
w ݱͰϑϩϯ
τΤϯ
υ։ൃͷσϑΝΫ
τ
ɾ
ελϯμʔ
υʹ
w όοΫΤϯ
υɺ
ϑϩϯ
τΤϯ
υؔͳ͘OQNͰґଘΛཧ
w ϑϩϯ
τΤϯ
υͳΒXFCQBDLͱ͍͏όϯ
υϥʔͬͯόϯ
υϧϑΝΠϧΛ࡞
Slide 11
Slide 11 text
ॲཧΛ͢ͳΒɺ
Α
Γ҆શଆʹ
w ݱͷ+BWB4DSJQUͰ࣮ߦલʹԿ͔ͱॲཧ͕ͪ͠
w #BCFMͳͲͷ
τϥϯεύΠϧ
w XFCQBDLͰͷόϯ
υϧ
w Ͳ͏࣮ͤߦલʹԿ͔͠Βॲཧ͢ΔͳΒόάΛݮΒͤΔΑ
Γ҆શଆʹ͚ͨॲཧ
w 5ZQF4DSJQUͷίϯύΠϧ
ʢ੩తܕݕࠪʣ
w ϓϩάϥϜͷ࣮ߦલʹݕͰ͖ΔΤϥʔͯ͢੩తʹݕ͓ͯ͘͠
Slide 12
Slide 12 text
ੲͷ5ZQF4DSJQUΛͬͯΔਓͷ
Α
͘
͋Δޡղ
Slide 13
Slide 13 text
ޡղܕఆٛϑΝΠϧͷཧ͕໘
w 5ZQF4DSJQUͰɺ
+BWB4DSJQUϥΠ
ϒϥ
ϦΛ͍͍ͨͱ͖
ͦͷϥΠ
ϒϥ
ϦͷܕఆٛϑΝΠϧΛඞཁͱ͢Δ
w ͦͷܕఆٛϑΝΠϧ .d.ts
ܕఆٛཧπʔϧΛͬͯผ్Πϯε
τʔϧ͠ͳ͍ͱ͍͚ͳ͍
w ੲͦ͏ͩͬͨ
w ࠓҧ͏
Slide 14
Slide 14 text
OQNͰཧͰ͖·͢
w ܕఆٛϑΝΠϧ͕ඞཁͳͷੲͱಉ͡
w ܕఆٛϑΝΠϧ͕%FpOJUFMZ5ZQFEʹϗεςΟ
ϯά͞Ε͍ͯΔͷੲͱಉ͡
w OQNͰͷཧ͕Մೳʹͳͬͨ
w ͨͱ͑$ npm i -D @types/reactͳͲ
w package.jsonͰґଘ͍ͯ͠ΔܕఆٛϑΝΠϧΛ֬ೝͰ͖Δ
Slide 15
Slide 15 text
ޡղҊ݅ʹ్த͔ΒೖΕΒΕͳ͍
w +BWB4DSJQUͰਐΊ͍ͯΔҊ݅
w ్த͔Β5ZQF4DSJQUʹΓସ͑Δͷ͕ࠔ
w ͯ͢ͷϑΝΠϧʹanyΛॻ͍ͯճ֦ͬͯுࢠΛ.tsʹ͠ͳ͍ͱ͍͚ͳ͍
w ੲͦ͏ͩͬͨ
w ࠓҧ͏
Slide 16
Slide 16 text
ࠞͥͯӡ༻Ͱ͖·͢
w ίϯύΠ
ϥΦϓγϣϯͷ--allowJsΛ༗ޮʹ͢Δ
·ͨɺ
tsconfig.jsonͷallowJsΛtrueʹ͢Δ
w +BWB4DSJQUଆͷੈքͯ͢anyͰ͋Δͱ
ͯ͠
ಓʹ5ZQF4DSJQUԽΛਐΊΔ
w ίϯύΠ
ϥઃఆϑΝΠϧtsconfig.jsonͰॳظ͕strict: true
w .jsΛ.tsʹϦωʔϜͨ͠Βɺ
Ͳ͜Λ͍͍͔ͤίϯύΠ
ϥ͕ڭ͑ͯ͘ΕΔ
Slide 17
Slide 17 text
VOLOPXOܕ
w 5ZQF4DSJQUΑ
Γunknownܕ͕ఆٛ͞Εͨ
w ͍··Ͱ
ʮΑ
͘Θ͔Βͳ͍ͷʯ
anyܕͱ͍ͯͨ͠
w ࠓޙɺ
ྫ͑JSON.parse()ͷΓܕ
anyΑ
Γunknownͱ
ͯ͠ѻ͏
ͱ҆શ
ʢඪ४ͷܕఆٛͰanyͱͳ͍ͬͯΔʣ
ԿΛม͍͑ͯ͘ͷ͔
w ϓϩάϥϜͷιʔείʔ
υ
w ίʔ
υΔ
w ͬͨ෦আڈ͢Δ
w ߴ࣭ͳϓϩάϥϜͰ͋ΔͨΊʹɺ
ৗʹίʔ
υશମͷΛߴ͘อͨͳ͚ΕͳΒͳ͍
Slide 21
Slide 21 text
ͳͥΔͷ͔
w ϓϩάϥϛϯάϏϧͷݐஙͰͳ͍
w ઃܭਤ௨Γʹ͠ͳ͍
w ίʔ
υ֎ͰͷมԽ
w ༷ͷมߋɺ
νʔϜϝϯόʔͷೖΕସ͑
w ։ൃऀͷεΩϧ্
ɾ
ཁ݅ͷख़
w Δͱɺ
ίʔ
υΛॻ͍͔ͯΒͷ࣌ؒܦաΛࢦ͢ͷͰͳ͘
ίʔ
υΛॻ͍͔ͨ࣌Βݱ࣌·Ͱͷɺ
ίʔ
υ֎ͰͷมԽͷେ͖͞Ͱ͋Δ
Slide 22
Slide 22 text
Ϧ
ϑΝΫλ
Ϧ
ϯά
w ιʔείʔ
υΛม͍͑ͯͨ͘ΊʹϦ
ϑΝΫλ
Ϧ
ϯά͕ඞཁ
w ݱͷϓϩάϥϛϯάʹ͓͍ͯ
ʮҰಈ࡞ͨ͠ϓϩάϥϜʹೋͱखΛՃ͑ͳ͍ʯ
ͳΜͯෆՄೳ
w ͦͦ
ʮҰಈ࡞ͨ͠ʯ
ΛͲͷ࣌ͷಈ࡞ͱ͢Δͷ͔
ఆٛͰ͖ͳ͍΄Ͳཁ͕݅ڊେʹͳ͍͍ͬͯͬͯΔ
w ͢ͳΘͪৗʹϦ
ϑΝΫλ
Ϧ
ϯά͠ଓ͚ͳ͚ΕͳΒͳ͍
wʮม͍͑ͯ͘༐ؾʯ
͕ඞཁ
Slide 23
Slide 23 text
ܕݕࠪʹΑΔ҆৺ײ
w Ϧ
ϑΝΫλ
Ϧ
ϯάதʹ৽ͨͳόάΛ࣋ͪࠐΜͰͳΒͳ͍
w ςε
τ͕͋Εม͍͚͑ͯΔ
w ςε
τ͕ͳ͚Εʜʜ
w Ұʹେ෯ͳมߋΛ͠ͳ͍ͳΒɺ
ίϯύΠ
ϥΛ৴༻͢Δख͋Δ
wʮςε
τॻ͍ͯͳ͍͚Ͳɺ
ίϯύΠϧ
ɾ
Τϥʔ͕ग़͍ͯͳ͍ʯ
w ˠ
ʮগͳ͘
ͱɺ
ίϯύΠϧ
ɾ
ΤϥʔͱͳΔΑ
͏ͳϛεؚ·Ε͍ͯͳ͍
ʂ
ʯ
w ͪΖΜςε
τΛॻ͘ʹӽͨ͜͠ͱͳ͍
Slide 24
Slide 24 text
ܕݕ͕ࠪ৴༻ͳΒͳ͍ྫ
addToFavorites(
entryId: number,
userId: number
) {
// do something
}
toFormattedString(
date: Date,
format: string,
timeZone: string
): string {
// do something
}
͜Ε͚ͩ͡ΌΓͳ͍
w 5ZQF4DSJQU4USVDUVSBM5ZQJOH
ʢߏܕʣ
ͱ͍͏ܕࣝผ๏Λ༻͍͍ͯΔ
w લทͷྫ
w EntryIdܕUserIdܕvalue: numberϓϩύςΟ
Λ࣋ͭ
w ಉ͡ϓϩύςΟ
͔͍࣋ͬͯ͠ͳ͍ͷͰɺ
ޓੑͷ͋ΔܕͱΈͳ͞Εͯ͠·
͏
w /PNJOBM5ZQJOH
ʢެশܕʣ
Λ࠾༻͢Δݴޠ
w ϓϩύςΟʹؔΘΒͣDMBTT͕ҧ͑ผͷܕͱͳΔ
ܧঝڞ௨ԽͰͳ͍
w DMBTTͷܧঝ FYUFOET
ΛෳͷΫϥεؒͷॲཧͷڞ௨Խखஈͱ
ͯ͠༻͍ͯͳΒͳ͍
w εύήςΟͷݪҼɺ
͍͍ͩͨޙչ͢Δ
w FYUFOETڞ௨ԽͷखஈͰͳ͘ɺ
நతੑ࣭ͷදݱͱ
ͯ͠͏
͜ͷྫͩͱ
wʮจࣈྻܥͷΦϒδΣΫ
τʯ
ͳͷ͔
wʮܥͷΦϒδΣΫ
τʯ
ͳͷ͔
w Λදݱ͍ͯ͠Δ
Slide 32
Slide 32 text
ίϯύΠϧ
ɾ
ΤϥʔΛຯํʹ͚ͭΖ
Slide 33
Slide 33 text
ಥવͷ༷มߋ
w Locatorܕͱ͍͏ΦϒδΣΫ
τΛ༻ͯ͠։ൃ͍ͯͨ͠
w औҾઌ͔Β߱ͬͯ͘
Δಥવͷ༷มߋ
ʂ
w Locatorܕͷ෦࣮Λमਖ਼͠ͳ͍ͱɺ
ͦͷ༷ʹରԠͰ͖ͳ͍
Slide 34
Slide 34 text
ม͍͑ͯͨ͘ΊͷᖰΓग़͠
w ͓ΉΖʹLegacyLocatorܕͱ͍͏ո͍͠ܕ໊ʹมߋ
w 5ZQF4DSJQUͱ*%&ΛΈ߹ΘͤΕ੩తղੳʹΑͬͯվ໊Ұॠ
w ͋ΒͨΊͯ৽͍༷͠Λ࣮ͨ͠LocatorܕΛ࣮
w ݹ͍LegacyLocatorܕΛҰՕॴLocatorܕʹมߋ్ͨ͠ɺ
Ұ੪ʹΤϥʔ
w ͦͷΤϥʔՕॴΛͻͨ͢Β௵͍ͯ͘͠
w ͜ΕΛᖰΓग़͠ͱݺΜͰ͍Δ
Slide 35
Slide 35 text
ίϯύΠϧ
ɾ
ΤϥʔΛຯํʹ͚ͭΖ
w ίϯύΠϧ
ɾ
Τϥʔѱ͍ͷͰͳ͍
w Ή͠Ζ։ൃऀʹৗʹدΓఴ͏ɺ
৺ڧ͍ຯํͰ͋Δ
w Τϥʔʹײँ
ʂ
w QSFUUJFS
ʢίʔ
υ
ɾ
ϑΥʔϚολʣ
ͱ5ZQF4DSJQUίϯύΠ
ϥʹै͓͚ͬͯͤ
Slide 36
Slide 36 text
ෆ҆ΛऔΓআ͘
w ίʔ
υΛม͍͑ͯ͘
͜ͱৗʹෆ҆ͱͷઓ͍
w ෆ҆ΛऔΓআͨ͘ΊʹԿ͕Ͱ͖Δ͔
w ςε
τΛॻ͘
w ܕΛॻ͘
wυΩϡϝϯ
τΛॻ͘
ʢܕΞϊςʔγϣϯྑ࣭ͳ
υΩϡϝϯ
τͰ͋Δʣ
w 5ZQF4DSJQUΛ࠾༻͢Εɺ
ෆ͕҆औΓআ͚ͯ
ʮม͍͑ͯ͘༐ؾʯ
ΛಘΒΕΔ