React×ReduxにおけるTypeScript入門
by
takepo
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 さいごに #参考文献