React×ReduxにおけるTypeScript入門
by
takepo
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
React×Reduxにおける TypeScript入門 01.21 サポーターズCoLab勉強会 Takeshima Nahoko
Slide 2
Slide 2 text
ౡࡊึࢠ!UBLFQP 2 ೣͱΒ͍ͨ͠ܥ େଔ8FCΤϯδχΞ ϥϯαʔζ ࣗ࡞ΩʔϘʔυʹڵຯʑ +BWB4DSJQU1)13VCZ(P 3FBDUྺܦͪ·ͨ͠ はじめに #profile
Slide 3
Slide 3 text
Lancers #会社概要 3
Slide 4
Slide 4 text
4
Slide 5
Slide 5 text
5 Lancers #メッセージ機能
Slide 6
Slide 6 text
Lancers #プロジェクト管理
Slide 7
Slide 7 text
7 Lancers #pook
Slide 8
Slide 8 text
৽نࣄۀઈࢍ։ൃத 3FBDUº3FEVYº5ZQF4DSJQU "1*αʔόʔ(Pݴޠ ;FQMJOͰσβΠϯͷڞ༗ "1*༷ॻΛNPDLαʔόʔԽ 8 はじめに #いま
Slide 9
Slide 9 text
5ZQFTDSJQU 5ZQF4DSJQUΛ͡ΊΔ 5ZQF4DSJQUͷܕʹ͍ͭͯ ҰॹʹೖΕΔͱྑ͍ϥΠϒϥϦ 3FBDUͷ$PNQPOFOUΛॻ͘ 3FEVYͷϑϩʔΛॻ͘ 5ZQF4DSJQUΛಋೖͯ͠Έͯ 9 はじめに #目次
Slide 10
Slide 10 text
TypeScript? 10
Slide 11
Slide 11 text
ϚΠΫϩιϑτ͕࡞ͬͨݴޠ Φʔϓϯιʔε $ͷઃܭΛ͍ͯͨ͠Ξϯμʔεɾϔϧεόʔά ͞Μ։ൃʹؔΘ͍ͬͯΔ େنΞϓϦέʔγϣϯ։ൃͷͨΊʹઃܭ͞Εͯ ͍Δ 11 TypeScript? #概要
Slide 12
Slide 12 text
KBWB4DSJQUʹରͯ͠ ੩తܕ͚ ΫϥεϕʔεͷΦϒδΣΫτࢦ ͕Ͱ͖Δ &4ʹ੩తܕ͚͕Ͱ͖ΔΠϝʔδ 5ZQF4DSJQUͰॻ͍ͨίʔυΛ +BWB4DSJQUʹίϯύΠϧ͕ඞཁ͕͋Δ 12 TypeScript? #特徴
Slide 13
Slide 13 text
3FBDU/BUJWFUTʹରԠͨ͠Γͱ࠷ۙਓؾ "OHVMBSͷඪ४ରԠͰ͋Δ (PPHMFͷࣾඪ४ݴޠʹͳͬͨ 13 TypeScript? #最近だと
Slide 14
Slide 14 text
ͱͱ3FBDUʹ1SPQ5ZQFTͱ͍͏ QSPQTͷܕνΣοΫػೳ͕ଘࡏ͍ͯͨ͠ ͔͠͠WͷϦϦʔεͰผύοέʔδԽ͞Εͨ QSPQUZQFTΛผͰΠϯετʔϧ͢Δඞཁ͕͋Δ 'MPX5ZQF4DSJQUͰܕνΣοΫΛਪ͢ΔΑ͏ʹ 14 TypeScript? #React.PropTypes?
Slide 15
Slide 15 text
੩తܕνΣοΫΛͯ͘͠Εͯɺ ࣮ߦલʹܕΤϥʔΛݕग़Ͱ͖Δ ίϯύΠϥͰͳ͘λΠϓνΣοΧʔ ൺֱత؆୯ʹಋೖ͕Ͱ͖Δ ϑΝΠϧͷઌ಄ʹʮ!qPXʯΛ͚ͭΔ͚ͩ qPXͱͱQPPLͰ͍ͬͯͨ 15 TypeScript? #flow
Slide 16
Slide 16 text
TypeScript をはじめる 16
Slide 17
Slide 17 text
5ZQF4DSJQU͚ͩΛࢼ͢ͳΒ 5ZQF4DSJQUΛΠϯετʔϧͯ͠ίϯύΠϧ 3FBDUͰ͏ͳΒ ࣗͰΠν͔Βڥߏங DSFBUFSFBDUBQQͰ؆୯ڥߏங 17 TypeScriptをはじめる #はじめる方法
Slide 18
Slide 18 text
UZQFTDSJQUΛΠϯετʔϧ OQNJOTUBMMHUZQFTDSJQU ίʔυΛίϯύΠϧ UTDϑΝΠϧ໊UT 18 Typescriptをはじめる #インストール & コンパイル
Slide 19
Slide 19 text
IFMMPXPSMEUTΛ࡞ 19 Typescriptをはじめる #HelloWorldする
Slide 20
Slide 20 text
IFMMPXPSMEUTΛίϯύΠϧ͢Δ UTDIFMMPXPSMEUT 20 Typescriptをはじめる #HelloWorldする
Slide 21
Slide 21 text
)FMMPXPSMEKTΛIUNMͰಡΈࠐΉ 21 Typescriptをはじめる #HelloWorldする
Slide 22
Slide 22 text
σΟϨΫτϦ࡞ NLEJSSFBDUIFMMPXPSME DESFBDUIFMMPXPSME QBDLBHFKTPOͷ࡞ OQNJOJU 22 Typescriptをはじめる #自分でイチからはじめる
Slide 23
Slide 23 text
σΟϨΫτϦˍϑΝΠϧ४උ 23 Typescriptをはじめる #自分でイチからはじめる
Slide 24
Slide 24 text
EJTUCVOEMFKT ίϯύΠϧͯ͠ग़ྗ͞ΕΔϑΝΠϧ ͱΓ͋͑ͣϑΝΠϧ࡞͚ͩ TSDJOEFYUTY 3FBDUΛ5ZQF4DSJQUͰॻͨ͘ΊͷϑΝΠϧ KTYΛ5ZQF4DSJQUͰ͔ͨ͘Ί֦ுࢠUTY ͱΓ͋͑ͣϑΝΠϧ࡞͚ͩ 24 Typescriptをはじめる #自分でイチからはじめる
Slide 25
Slide 25 text
JOEFYIUNM CVOEMFKTΛಡΈࠐΜͰ3FBDUίϯϙʔωϯτΛग़ ྗ͢ΔΞϓϦέʔγϣϯͷຊମʹͳΔϑΝΠϧ 25 Typescriptをはじめる #自分でイチからはじめる
Slide 26
Slide 26 text
26 Typescriptをはじめる #自分でイチからはじめる
Slide 27
Slide 27 text
ඞཁͳϥΠϒϥϦΛΠϯετʔϧ͢Δ 8FCQBDL OQNJOTUBMMTBWFEFWXFCQBDL SFBDUSFDUEPN OQNJOTUBMMTBWFSFBDUSFBDUEPN!UZQFT SFBDU!UZQFTSFBDUEPN 27 Typescriptをはじめる #自分でイチからはじめる
Slide 28
Slide 28 text
5ZQF4DSJQU·ΘΓͰඞཁͳϞϊ OQNJOTUBMMTBWFEFWUZQFTDSJQUBXFTPNF UZQFTDSJQUMPBEFSTPVSDFNBQMPBEFS 28 Typescriptをはじめる #自分でイチからはじめる
Slide 29
Slide 29 text
UZQFTDSJQU 5ZQF4DSJQUຊମ BXFTPNFUZQFTDSJQUMPBEFS ઃఆϑΝΠϧΛݩʹ τϥϯεύΠϧ͢ΔͨΊͷύοέʔδ TPVSDFNBQMPBEFS ιʔεϚοϓੜύοέʔδ 29 Typescriptをはじめる #自分でイチからはじめる
Slide 30
Slide 30 text
τϥϯεύΠϧ͢ΔͨΊͷ ઃఆϑΝΠϧͷUTDPOpHKTPOͷ࡞ ৭ʑϓϩύςΟ͕͋ΔͷͰ ৄ͘͠ެࣜΛ֬ೝʂ IUUQTXXXUZQFTDSJQUMBOHPSHEPDT IBOECPPLUTDPOpHKTPOIUNM 8FCQBDLͷઃఆϑΝΠϧXFCQBDLDPOpHKT࡞ 30 Typescriptをはじめる #自分でイチからはじめる
Slide 31
Slide 31 text
31 Typescriptをはじめる #自分でイチからはじめる
Slide 32
Slide 32 text
32 Typescriptをはじめる #自分でイチからはじめる
Slide 33
Slide 33 text
"QQUTY 33 Typescriptをはじめる #自分でイチからはじめる
Slide 34
Slide 34 text
JOEFYUTY 34 Typescriptをはじめる #自分でイチからはじめる
Slide 35
Slide 35 text
QBDLBHFKTPOʹCVJME༻ͷεΫϦϓτΛՃ͢Δ 35 Typescriptをはじめる #自分でイチからはじめる
Slide 36
Slide 36 text
ϏϧυεΫϦϓτ࣮ߦͯ͠JOEFYIUNMΛ։͘ OQNSVOCVJME 36 Typescriptをはじめる #自分でイチからはじめる
Slide 37
Slide 37 text
֎෦ϥΠϒϥϦΛೖΕΔͱ͖ʹ ҰॹʹܕఆٛϑΝΠϧΠϯετʔϧ͢Δඞཁ͕ ͋Δ 5ZQF4DSJQUҎ߱ͩͱ OQN͔ΒΠϯετʔϧ͢Δ͜ͱ͕Ͱ͖Δ OQNJOTUBMMTBWF!UZQFT\ܕఆٛϑΝΠϧ໊^ 37 TypeScriptをはじめる #ライブラリをインストールする
Slide 38
Slide 38 text
5ZQF4FBSDIΛ͑ܕఆٛϑΝΠϧݕࡧ͕Ͱ͖Δ IUUQNJDSPTPGUHJUIVCJP5ZQF4FBSDI 38 TypeScriptをはじめる #ライブラリをインストールする
Slide 39
Slide 39 text
OQNJOTUBMMHDSFBUFSFBDUBQQ DSFBUFSFBDUBQQ\ΞϓϦ໊^TDSJQUT WFSTJPOSFBDUTDSJQUTUT DEΞϓϦ໊ OQNTUBSU 39 Typescriptをはじめる #create-react-appではじめる
Slide 40
Slide 40 text
Typescriptをはじめる #create-react-appではじめる
Slide 41
Slide 41 text
これだけで OK✨ 41
Slide 42
Slide 42 text
TypeScript の型について 42
Slide 43
Slide 43 text
#PPMFBO /VNCFS 4USJOH "SSBZ 5VQMF 43 Typescriptの型について #基本の型 &OVN "OZ 7PJE /FWFS 0CKFDU
Slide 44
Slide 44 text
#PPMFBO MFUJT-PBEJOHCPPMFBOGBMTF /VNCFS MFUBHFOVNCFS "SSBZ MFUMJTUOVNCFS<>< > 44 Typescriptの型について #変数宣言
Slide 45
Slide 45 text
໊લ͖ͷఆ܈Λఆٛ͢Δ͜ͱ͕Ͱ͖Δ "DUJPO5ZQFΛఆٛ͢Δͱ͖ʹ͏ FOVN%JSFDUJPO\ 6Q %PXO -FGU 3JHIU ^ 45 Typescriptの型について #Enum
Slide 46
Slide 46 text
ͲΜͳͰೖՄೳ 5ZQF4DSJQUͷܕγεςϜΛແࢹ͢Δ͜ͱʹͳΔ 5ZQF4DSJQUͷྑ͞Λͳͯ͘͠͠·͏ͷͰ ͳΔ͘ආ͚Δ͜ͱ͕ཧ 46 Typescriptの型について #Any
Slide 47
Slide 47 text
จࣈྻɾɾਅِͷϦςϥϧ͕͋Δ ྫ DPOTUBIPHFbIPHF` bIPHF`͔͠ڐ༰͞Εͳ͍ܕʹ 47 Typescriptの型について #リテラル型
Slide 48
Slide 48 text
+BWB4DSJQUʹଘࡏ͠ͳ͍ɺ 5ZQF4DSJQUͷಠࣗͷߏจ ΦϒδΣΫτܕʹ໊લΛ͚ͭΔ͜ͱ͕Ͱ͖Δ JOUFSGBDF1FSTPO\ OBNFTUSJOH BHFOVNCFS ^ 48 Typescriptの型について #interface
Slide 49
Slide 49 text
ఆٛͨ͠ΠϯλϑΣʔεΛ͏ DPOTUIPHF1FSTPO\ OBNFbUBSP` BHF ^ 49 Typescriptの型について #interface
Slide 50
Slide 50 text
ܕऍΛ͠ͳͯ͘ ࣮ΦϒδΣΫτܕΛਪͯ͘͠ΕΔ ܕʹҰக͠ͳ͍ΦϒδΣΫτΛ มʹೖͨ͠Γ͠Α͏ͱ͢ΔͱܕΤϥʔʹͳΔ 50 Typescriptの型について #interface
Slide 51
Slide 51 text
ҾͷܕͱΓͷܕΛఆٛ͢Δ GVODUJPOBEE YOVNCFS ZOVNCFS OVNCFS\ SFUVSOYZ ^ 51 Typescriptの型について #関数
Slide 52
Slide 52 text
ΠϯλϑΣʔεͳͲͷܕఆٛΛมԽͰ͖Δ ֎෦ϥΠϒϥϦͷܕఆٛͱ͔ͰΑ͘ݟΔ GVODUJPOJEFOUJUZ5 BSH5 5\ SFUVSOBSH ^ MFUPVUQVUJEFOUJUZTUSJOH NZ4USJOH 52 Typescriptの型について #ジェネリック
Slide 53
Slide 53 text
一緒に入れると よいライブラリ 53
Slide 54
Slide 54 text
5ZQF4DSJQUͷ੩తίʔυղੳπʔϧ &4-JOUͰ͓ͳ͡ΈͷBJSCOCͷϧʔϧ͕͋ΔͷͰ ·͕ͣ͜ΕΛೖΕΔ͜ͱΛ͓͢͢Ί͠·͢ IUUQTXXXOQNKTDPNQBDLBHFUTMJOUDPOpH BJSCOC ϓϥεͰඞཁʹԠͯ͡ϧʔϧՃ͢Ε0, 54 一緒に入れるとよいライブラリ #TSLint
Slide 55
Slide 55 text
54-JOUͱ&4-JOUͷ྆ํαϙʔτ͚ͯͨ͠Ͳɺ 54-JOUʹ͍Ζ͍ΖͰ͖ͯͨͷͰ &4-JOUΛαϙʔτ͍ͯ͘͠Αʂ ͱɺ࠷ۙ5ZQF4DSJQUͷެࣜͷΞφϯε͕͋ͬͨ UZQFTDSJQUFTMJOU͕࢝ಈͨ͠ͷͰࠓޙཁνΣοΫʂ IUUQTHJUIVCDPN.JDSPTPGU5ZQF4DSJQU JTTVFT 55 一緒に入れるとよいライブラリ #ただ。。。
Slide 56
Slide 56 text
ίʔυϑΥʔϚολ ίʔυΛҰ؏ͨ͠ελΠϧʹ४ڌ͢ΔΑ͏ʹͰ͖Δ 5ZQF4DSJQUʹݶΒͣ+4 +49 $44 +40/ͳͲ ϑϩϯτͰΘΕ͍ͯΔݴޠ༷ʹରԠ͍ͯ͠Δ IUUQTHJUIVCDPNQSFUUJFSQSFUUJFS πʔϧʹ͓·͔ͤͰ͖Δͱ͜Ζ ͓·͔͍͖ͤͯ͠·͠ΐ͏ʂ 56 一緒に入れるとよいライブラリ #Prettier
Slide 57
Slide 57 text
Reactの Componentを書く 57
Slide 58
Slide 58 text
58 ReactのComponentを書く # Componentの基本形
Slide 59
Slide 59 text
59 ReactのComponentを書く # Componentでprops&state
Slide 60
Slide 60 text
60 ReactのComponentを書く # Componentでprops&state
Slide 61
Slide 61 text
61 ReactのComponentを書く # SFCの基本形
Slide 62
Slide 62 text
62 ReactのComponentを書く # SFCでPropsを使う
Slide 63
Slide 63 text
$PNQPOFOU͝ͱʹσΟϨΫτϦΛͬͯ 1SPQTͷܕఆٛϑΝΠϧΛผͰ࡞ͬͯ JOEFYUTYͰಡΈऔΔܗΛ ͱ͍ͬͯΔ 63 ReactのComponentを書く #Componentのディレクトリ構成
Slide 64
Slide 64 text
Reduxの フローを書く 64
Slide 65
Slide 65 text
65 Reduxのフローを書く #ActionType
Slide 66
Slide 66 text
66 Reduxのフローを書く #ActionCreater
Slide 67
Slide 67 text
67 Reduxのフローを書く #reducer
Slide 68
Slide 68 text
68 Reduxのフローを書く #reducer
Slide 69
Slide 69 text
69 Reduxのフローを書く #Container
Slide 70
Slide 70 text
70 Reduxのフローを書く #Container
Slide 71
Slide 71 text
TypeScriptを 導入してみて 71
Slide 72
Slide 72 text
#BCFMͰॻ͘ͷͱಉ͡ײ͡Ͱॻ͚Δ ίʔυͷՄಡੑΞοϓʂ ίϯύΠϧ࣌ͷΤϥʔݕग़ͰૣظൃݟͰ͖Δʂ ܕਪͯ͘͠ΕΔͷͰݡ͍ ίʔυิΊͬͪΌศར 72 TypeScriptを導入してみて #導入してみて
Slide 73
Slide 73 text
'MPXΛ৮ͬͨ͜ͱ͕͋ͬͨ͜ͱʹΑΓ ܕΛ͚ͭΔোน͋·Γߴ͘ͳ͔ͬͨ ৽نϓϩδΣΫτͩͬͨͷͰ ·ͬ͞Βͷঢ়ଶ͔Βಋೖ͕࢝ΊΒΕͨ ్தͰख͍͍ͬͯͨͩͨ͜ͱ͕͚͋ͬͨͲ ൺֱతૉʹϓϩδΣΫτࢀՃ͍͚ͯͨͩͨ͠ 73 TypeScriptを導入してみて #導入してみて
Slide 74
Slide 74 text
ܕͱ͔ܕͷ͚ํͱ͔͍Ζ͍Ζݴ͖͚ͬͯͨͲ ৽نࣄۀͷ͡Ίͩͱશ෦ΩϨΠʹॻ͘͜ͱ ͍͠ దٓ"OZ0CKFDUɺ'VODUJPOΛͬͯͪΐͬͱΏ Δ;Θܕఆٛʹͨ͠Γɻɻɻ νʔϜͰͲ͜·Ͱ͍͔ܾͬͯ͘ΊΔ͜ͱେࣄ 74 TypeScriptを導入してみて #導入してみて
Slide 75
Slide 75 text
さいごに 75
Slide 76
Slide 76 text
さいごに #今回の資料 ϦϙδτϦʹαϯϓϧίʔυࡌͤͯ·͢ IUUQTHJUIVCDPNUBLFQPSFBDUSFEVY UZQFTDSJQUTBNQMF εϥΠυࢿྉޙͰΞοϓ༧ఆʂ 76
Slide 77
Slide 77 text
77
Slide 78
Slide 78 text
78
Slide 79
Slide 79 text
5ZQF4DSJQU%PDVNFOUBUJPO IUUQTXXXUZQFTDSJQUMBOHPSHEPDT IPNFIUNM 5ZQF4DSJQUͰ3FBDUΛॻ͘ IUUQTNBFDIBCJOBSDIJWFT 79 さいごに #参考文献