1. TypeScriptãšã¯
TypeScriptã¯ãè¿å¹Žã®ãŠã§ãéçºã®äžçã§æ³šç®ã济ã³ãŠããããã°ã©ãã³ã°èšèªã§ãããããããã®èæ¯ãç®çããããŠJavaScriptãšã®é¢é£æ§ãªã©ãå€ãã®äººã ããŸã ååã«ç解ããŠããªãéšåãå€ãã§ãããããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptã®åºæ¬çãªæŠå¿µãç¹åŸŽã«ã€ããŠããããããã解説ããŠãããŸãã
1.1. TypeScriptã®èæ¯ãšç®ç
ããã°ã©ãã³ã°ã®äžçã¯æ¥ã é²åããŠããŸããJavaScriptã¯ãŠã§ãããŒãžã«åçãªèŠçŽ ãè¿œå ããããã®èšèªãšããŠç»å ŽããŸãããããã®åŸã®çºå±ã«äŒŽãããã倧èŠæš¡ã§è€éãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã䜿çšãããããã«ãªããŸããããããã倧èŠæš¡ãªãããžã§ã¯ããå¹ççã«éçºã»ç®¡çããããã«ã¯ããã匷åãªããŒã«ãèšèªã®ãµããŒããæ±ããããŸãããããã§ç»å Žããã®ãTypeScriptã§ããTypeScriptã¯ãJavaScriptã®ã¹ãŒããŒã»ãããšããŠéçºãããéçåä»ããã¯ã©ã¹ããŒã¹ã®ãªããžã§ã¯ãæåãªã©ãJavaScriptã«ã¯ãªãå€ãã®æ©èœãæäŸããŠããŸãã
1.2. JavaScriptãšã®é¢é£æ§
TypeScriptã¯ããã®ååããããããããã«ãJavaScriptãšæ·±ãé¢é£æ§ãæã£ãŠããŸããå ·äœçã«ã¯ãTypeScriptã¯JavaScriptã®ã¹ãŒããŒã»ãããšããŠèšèšãããŠããŸããããã¯ããã¹ãŠã®JavaScriptã®ã³ãŒããTypeScriptã®ã³ãŒããšããŠãæå¹ã§ãããšããããšãæå³ããŸããããããTypeScriptã¯JavaScriptã«ã¯ãªãå€ãã®æ©èœãæ§æãæã£ãŠãããããã«ããéçºè ã¯ããå®å šã§å¹ççãªã³ãŒããæžãããšãã§ããŸãã
1.3. TypeScriptã®äž»ãªç¹åŸŽ
TypeScriptã®æã泚ç®ãã¹ãç¹åŸŽã¯ãéçåä»ãã§ããããã«ãããã³ãŒãã®ãã°ãæ©æã«æ€åºããããã³ãŒãã®å¯èªæ§ãä¿å®æ§ãåäžãããããšãã§ããŸãããŸããTypeScriptã¯ã¯ã©ã¹ããŒã¹ã®ãªããžã§ã¯ãæåããµããŒãããŠããã倧èŠæš¡ãªãããžã§ã¯ãã§ãæ§é çã«ã³ãŒãã管çããããšãã§ããŸããããã«ãã€ã³ã¿ãŒãã§ãŒã¹ããžã§ããªã¯ã¹ãªã©ãé«åºŠãªåã®æ©èœããµããŒãããŠãããæè»ãã€åŒ·åãªã³ãŒãèšèšãå¯èœã§ãã
2. TypeScriptã®åºæ¬æ§æ
TypeScriptã®é åã®äžã€ã¯ãJavaScriptã®åçãªç¹æ§ãæã¡ã€ã€ãéçåä»ãã®æ©èœãè¿œå ããããšã§ãããå®å šã§å¹ççãªã³ãŒããæžãããšãã§ããç¹ã«ãããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptã®åºæ¬çãªæ§æã«çŠç¹ãåœãŠãåã®åºç€ãå€æ°ãé¢æ°ã®åå®çŸ©ããããŠã€ã³ã¿ãŒãã§ãŒã¹ãšã¯ã©ã¹ã«ã€ããŠè§£èª¬ããŠãããŸãã
2.1. åã®åºç€
TypeScriptã®äžå¿çãªç¹åŸŽã¯éçåä»ãã§ããããã«ãããå€æ°ãé¢æ°ã®æ»ãå€ãåŒæ°ãªã©ã«ç¹å®ã®åãæå®ããããšãã§ããŸããåºæ¬çãªåãšããŠã¯ãnumber
ãstring
ãboolean
ãªã©ããããŸãããŸããè€æ°ã®åãæã€ããšãã§ããå€æ°ãå®çŸ©ããããã®union
åããä»»æã®åãæã€ããšãã§ããany
åãªã©ãå€å²ã«ãããåãæäŸãããŠããŸãã
2.2. å€æ°ãšé¢æ°ã®åå®çŸ©
TypeScriptã§ã¯ãå€æ°ã宣èšããéã«ãã®åãæå®ããããšãæšå¥šãããŸããäŸãã°ãlet age: number = 20;
ã®ããã«ãå€æ°age
ã®åãnumber
ãšããŠå®çŸ©ããããšãã§ããŸãããŸããé¢æ°ã«ã€ããŠããåŒæ°ãæ»ãå€ã®åãå®çŸ©ããããšãã§ããŸããããã«ãããé¢æ°ã®äœ¿çšæ¹æ³ãæåŸ
ãããåäœãæ確ã«ãªãããã°ã®çºçãé²ãããšãã§ããŸãã
2.3. ã€ã³ã¿ãŒãã§ãŒã¹ãšã¯ã©ã¹
倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãéçºããéãããŒã¿ã®æ§é ãé¢æ°ã®åœ¢ãçµ±äžçã«ç®¡çããããã®ããŒã«ãšããŠãã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãããŠããŸããã€ã³ã¿ãŒãã§ãŒã¹ã¯ãç¹å®ã®æ§é ãã¡ãœãããæã€ãªããžã§ã¯ããå®çŸ©ããããã®åŒ·åãªããŒã«ã§ããäžæ¹ãã¯ã©ã¹ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®äžæ žçãªæŠå¿µã§ãããTypeScriptã§ããµããŒããããŠããŸããã¯ã©ã¹ã䜿çšããããšã§ãããŒã¿ãšãã®ããŒã¿ãæäœããã¡ãœãããäžã€ã®åäœãšããŠãŸãšããããšãã§ããã³ãŒãã®åå©çšæ§ã管çæ§ãåäžããŸãã
3. TypeScriptã®ã³ã³ãã€ã©
TypeScriptã®ããäžã€ã®å€§ããªç¹åŸŽã¯ããã®åŒ·åãªã³ã³ãã€ã©ã«ãããŸãããã®ã³ã³ãã€ã©ã¯ãTypeScriptã®ã³ãŒããJavaScriptã®ã³ãŒãã«å€æãã圹å²ãæã£ãŠããŸããããããããã ãã§ã¯ãªããå€ãã®äŸ¿å©ãªæ©èœããªãã·ã§ã³ãæäŸããŠãããéçºè ã®ããŒãºã«åãããŠã«ã¹ã¿ãã€ãºããããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã®ã³ã³ãã€ã©ã®äž»èŠãªæ©èœããªãã·ã§ã³ã«ã€ããŠè©³ãã解説ããŠãããŸãã
3.1. ã³ã³ãã€ã©ãªãã·ã§ã³ã®æŠèŠ
TypeScriptã®ã³ã³ãã€ã©ã¯ãå€ãã®ãªãã·ã§ã³ãæäŸããŠããŸãããããã®ãªãã·ã§ã³ã¯ãtsconfig.json
ãšããèšå®ãã¡ã€ã«ã§ç®¡çããããããžã§ã¯ãã®èŠä»¶ã«å¿ããŠæ§ã
ãªèšå®ãè¡ãããšãã§ããŸããäŸãã°ãstrict
ãªãã·ã§ã³ãæå¹ã«ãããšãããå³æ Œãªåãã§ãã¯ãè¡ãããããã«ãªããŸãããŸããtarget
ãªãã·ã§ã³ã䜿çšãããšãåºåãããJavaScriptã®ããŒãžã§ã³ãæå®ããããšãã§ããŸãã
3.2. åãã§ãã¯ã®ä»çµã¿
TypeScriptã®ã³ã³ãã€ã©ã¯ãã³ãŒãå ã®åã®äžæŽåããšã©ãŒãæ€åºããããã®åãã§ãã¯æ©èœãæã£ãŠããŸãããã®åãã§ãã¯ã¯ãã³ã³ãã€ã«æã«è¡ããããšã©ãŒãæ€åºãããå Žåã¯ã³ã³ãã€ã«ã倱æããŸããããã«ãããã©ã³ã¿ã€ã ãšã©ãŒã®ãªã¹ã¯ãå€§å¹ ã«æžå°ãããããšãã§ããŸããåãã§ãã¯ã®ç²ŸåºŠã¯ãäžè¿°ã®ã³ã³ãã€ã©ãªãã·ã§ã³ã§èª¿æŽããããšãã§ããŸãã
3.3. ãã©ã³ã¹ãã€ã«ã®ããã»ã¹
ãã©ã³ã¹ãã€ã«ãšã¯ãããããã°ã©ãã³ã°èšèªã§æžãããã³ãŒããå¥ã®ããã°ã©ãã³ã°èšèªã®ã³ãŒãã«å€æããããšãæããŸããTypeScriptã®ã³ã³ãã€ã©ã¯ãTypeScriptã®ã³ãŒããJavaScriptã®ã³ãŒãã«ãã©ã³ã¹ãã€ã«ãã圹å²ãæã£ãŠããŸãããã®ãã©ã³ã¹ãã€ã«ã®ããã»ã¹ã¯éåžžã«é«éã§ã倧èŠæš¡ãªãããžã§ã¯ãã§ãçæéã§å®äºããŸãããŸããåºåãããJavaScriptã®ã³ãŒãã¯ãæå®ãããããŒãžã§ã³ã®JavaScriptæšæºã«æºæ ããŠãããããŸããŸãªãã©ãŠã¶ãç°å¢ã§åäœããããã«æé©åãããŠããŸãã
4. TypeScriptã®å®çšäŸ
TypeScriptã¯ãã®æè»æ§ãšåŒ·åãªåã·ã¹ãã ã®ãããã§ãããŸããŸãªã·ããªãªã§ã®å©çšãå¢ããŠããŸããããã³ããšã³ãããããã¯ãšã³ããããã«ã¯äººæ°ã®ã©ã€ãã©ãªãšã®é£æºãŸã§ãTypeScriptã®å¯èœæ§ã¯åºãããèŠããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptã®å ·äœçãªå®çšäŸã«ã€ããŠã詳ãã解説ããŠãããŸãã
4.1. ããã³ããšã³ãã§ã®å©çš
ãŠã§ãã®ããã³ããšã³ãéçºã«ãããŠãTypeScriptã¯ReactãVueãAngularãªã©ã®äººæ°ã®ãã¬ãŒã ã¯ãŒã¯ãšçµã¿åãããŠå©çšãããããšãå€ãã§ããéçåä»ãã®ãããã§ãã³ã³ããŒãã³ãéã®ããŒã¿ã®æµããç¶æ 管çãæ確ã«ãªãããã°ã®çºçãå€§å¹ ã«æžå°ãããããšãã§ããŸãããŸããéçºå¹çãåäžãã倧èŠæš¡ãªãããžã§ã¯ãã§ãå®å®ããã³ãŒãããŒã¹ãç¶æããããšãã§ããŸãã
4.2. ããã¯ãšã³ãã§ã®å©çš
ããã¯ãšã³ãéçºã«ãããŠããTypeScriptã®äººæ°ã¯é«ãŸã£ãŠããŸããç¹ã«Node.jsãããŒã¹ãšããéçºã«ãããŠãTypeScriptã¯ãã®åŒ·åãªåã·ã¹ãã ã掻ãããŠAPIã®éçºãããŒã¿ããŒã¹ã®æäœãå¹ççã«è¡ãããšãã§ããŸãããŸããExpressãNestJSãªã©ã®ãã¬ãŒã ã¯ãŒã¯ãšçµã¿åãããããšã§ãããå ç¢ã§ã¹ã±ãŒã©ãã«ãªããã¯ãšã³ãã·ã¹ãã ãæ§ç¯ããããšãã§ããŸãã
4.3. ã©ã€ãã©ãªãšã®é£æº
TypeScriptã¯ãå€ãã®äººæ°ã®ã©ã€ãã©ãªãããŒã«ãšã®é£æºã容æã§ããå€ãã®ã©ã€ãã©ãªãTypeScriptã®åå®çŸ©ãã¡ã€ã«ãæäŸããŠãããããã«ããã©ã€ãã©ãªã®é¢æ°ãã¡ãœãããå®å šã«äœ¿çšããããšãã§ããŸãããŸããDefinitelyTypedãšãããããžã§ã¯ããéããŠãã³ãã¥ããã£ãæäŸããåå®çŸ©ãã¡ã€ã«ãå©çšããããšãã§ããŸããããã«ãããTypeScriptã䜿çšããéçºç°å¢ã§ã®ã©ã€ãã©ãªã®å©çšãããã«ã¹ã ãŒãºã«ãªããŸãã
5. TypeScriptã®å¿çš
TypeScriptã¯åºæ¬çãªåã·ã¹ãã ã ãã§ãªããé«åºŠãªåãæ©èœãæã£ãŠãããããã«ããæè»ã§åŒ·åãªã³ãŒããæžãããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptã®å¿çšçãªåŽé¢ã«çŠç¹ãåœãŠããžã§ããªã¯ã¹ãã¢ãžã¥ãŒã«ããã³ã¬ãŒã¿ãªã©ã®é«åºŠãªæ©èœã«ã€ããŠè©³ãã解説ããŠãããŸãã
5.1. ãžã§ããªã¯ã¹ãšé«åºŠãªå
ãžã§ããªã¯ã¹ã¯ãåã®åå©çšæ§ãé«ããããã®åŒ·åãªããŒã«ã§ããããã«ãããäžã€ã®é¢æ°ãã¯ã©ã¹ãè€æ°ã®åã§äœ¿çšããããšãã§ããŸããäŸãã°ãé åããããã¹ãªã©ã®äžè¬çãªããŒã¿æ§é ãæ±ãéã«ããžã§ããªã¯ã¹ã掻çšããããšã§åå®å šæ§ãä¿ã¡ã€ã€ãæè»ã«ã³ãŒããæžãããšãã§ããŸãããŸããTypeScriptã«ã¯æ¡ä»¶åããããåãªã©ã®é«åºŠãªåãæäŸãããŠãããããããçµã¿åãããããšã§è€éãªåã®æäœãå€æãè¡ãããšãã§ããŸãã
5.2. ã¢ãžã¥ãŒã«ãšåå空é
倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãéçºããéãã³ãŒãã®ç®¡çãåå©çšæ§ãåäžãããããã«ãã¢ãžã¥ãŒã«ãåå空éã䜿çšããããšãæšå¥šãããŸããã¢ãžã¥ãŒã«ã¯ãé¢é£ããé¢æ°ãã¯ã©ã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãªã©ãäžã€ã®åäœãšããŠãŸãšããããšãã§ããæ©èœã§ããäžæ¹ãåå空éã¯ãã°ããŒãã«ã¹ã³ãŒãã®æ±æãé²ãããã®ããŒã«ãšããŠäœ¿çšãããŸãããããã®æ©èœã掻çšããããšã§ãã³ãŒãã®æ§é ãæ確ã«ããã¡ã³ããã³ã¹ãæ¡åŒµã容æã«ãªããŸãã
5.3. ãã³ã¬ãŒã¿ãšã¡ã¿ããŒã¿
ãã³ã¬ãŒã¿ã¯ãã¯ã©ã¹ãã¡ãœãããããããã£ã«ã¡ã¿ããŒã¿ãè¿œå ããããã®æ©èœã§ããããã«ãããã³ãŒãã®æ¯ãèããåçã«å€æŽããããšãã§ããŸããäŸãã°ãAngularãã¬ãŒã ã¯ãŒã¯ã§ã¯ããã³ã¬ãŒã¿ã䜿çšããŠã³ã³ããŒãã³ãããµãŒãã¹ã®ã¡ã¿ããŒã¿ãå®çŸ©ããŸãããŸããTypeScriptã«ã¯ãªãã¬ã¯ã·ã§ã³ãšããæ©èœãæäŸãããŠãããããã䜿çšããããšã§ãå®è¡æã«ãªããžã§ã¯ãã®åãã¡ã¿ããŒã¿ãååŸããããšãã§ããŸãã
6. TypeScriptã®åŠç¿ãªãœãŒã¹
TypeScriptã®åŠç¿ã¯ãåå¿è ããäžçŽè ãŸã§ãå€ãã®ãªãœãŒã¹ãå©çšå¯èœã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptãåŠã¶ããã®ããããã®æžç±ããŠã§ããµã€ããå®è·µçãªãããžã§ã¯ãã®ã¢ã€ãã£ã¢ããããŠã³ãã¥ããã£ããµããŒãã«ã€ããŠè©³ãã解説ããŠãããŸãã
6.1. ããããã®æžç±ãšãŠã§ããµã€ã
å€ãã®æžç±ãTypeScriptã®åŠç¿ããµããŒãããŠããŸããåå¿è åãããäžçŽè åããŸã§ãå¹ åºãå 容ã®æžç±ãåºçãããŠããŸããç¹ã«ãTypeScript Deep Diveããšããæžç±ã¯ãåºç€ããå¿çšãŸã§ãç¶²çŸ ããŠãããå€ãã®éçºè ããé«ãè©äŸ¡ãåããŠããŸãããŸããå ¬åŒã®TypeScriptãã³ãããã¯ãå€ãã®ããã°ããã¥ãŒããªã¢ã«ãµã€ããååšããæ¥ã ã®åŠç¿ã«åœ¹ç«ãŠãããšãã§ããŸãã
6.2. å®è·µçãªãããžã§ã¯ãã®ã¢ã€ãã£ã¢
å®éã«æãåãããŠãããžã§ã¯ããäœæããããšã¯ãåŠç¿ã®å¹æãé«ããæè¯ã®æ¹æ³ã®äžã€ã§ããäŸãã°ãç°¡åãªTODOã¢ããªããã£ããã¢ããªãTypeScriptã§äœæããããšã§ãåºæ¬çãªæ§æãåã®å©çšæ¹æ³ã身ã«ã€ããããšãã§ããŸãããŸããããé«åºŠãªã¢ããªã±ãŒã·ã§ã³ãç®æãå ŽåãAPIãå©çšããããŒã¿ã®ååŸã衚瀺ãå€éšã©ã€ãã©ãªãšã®é£æºãªã©ã®ããŒããåãå ¥ããããšã§ãTypeScriptã®å¿çšçãªéšåã«ã觊ããããšãã§ããŸãã
6.3. ã³ãã¥ããã£ãšãµããŒã
TypeScriptã®ã³ãã¥ããã£ã¯éåžžã«æŽ»çºã§ãå€ãã®ãµããŒããåããããŸããGitHubãStack Overflowãªã©ã®ãã©ãããã©ãŒã ã§ã¯ãTypeScriptã«é¢ãã質åãè°è«ãæ¥ã è¡ãããŠãããå°ã£ããšãã«ã¯ã³ãã¥ããã£ã®åãåããããšãã§ããŸãããŸããå®æçã«éå¬ãããããŒãã¢ãããã«ã³ãã¡ã¬ã³ã¹ããåŠã³ã®å ŽãšããŠéåžžã«äŸ¡å€ããããŸãã
7. ãŸãšã
ãã®èšäºãéããŠãTypeScriptã®åºç€ããå¿çšãåŠç¿ãªãœãŒã¹ãŸã§å¹ åºãåŠã¶ããšãã§ããŸãããæåŸã«ãTypeScriptã®åŒ·ã¿ãšåŒ±ã¿ãä»åŸã®å±æããããŠåŠç¿ã®ç¶ç¶ã®éèŠæ§ã«ã€ããŠãŸãšããŠãããŸãã
7.1. TypeScriptã®åŒ·ã¿ãšåŒ±ã¿
TypeScriptã®æ倧ã®åŒ·ã¿ã¯ãéçåä»ããæã€ããšã§ããããã«ãããã³ãŒãã®å質ãåäžããããã°ãæ©æã«æ€åºããããšãã§ããŸãããŸãã倧èŠæš¡ãªãããžã§ã¯ãã§ãå®å šã«ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããããšãå¯èœã§ããäžæ¹ãååŠè ã«ãšã£ãŠã¯ãåã®æŠå¿µãåã®ãšã©ãŒãé£ããæããããšããããããããŸãããããããããã¯ç¶ç¶çãªåŠç¿ãšå®è·µãéããŠå æããããšãã§ããŸãã
7.2. ä»åŸã®TypeScriptã®å±æ
TypeScriptã¯ããã®äººæ°ãšå ±ã«é²åãç¶ããŠããŸããè¿å¹Žã§ã¯ãããé«åºŠãªåã®æ©èœããéçºè ã®çç£æ§ãåäžãããããŒã«ãè¿œå ãããŠããŸããä»åŸããJavaScriptã®ECMAScriptæšæºãšé£æºããªãããæ°ããæ©èœãæ¹åãè¡ãããããšãæåŸ ãããŸãã
7.3. ç¶ç¶çãªåŠç¿ã®éèŠæ§
æè¡ã®äžçã¯æ¥ã é²åããŠããŸããTypeScriptãäŸå€ã§ã¯ãããŸãããæ°ããããŒãžã§ã³ããªãªãŒã¹ããããã³ã«ãæ°ããæ©èœãæ¹åãè¡ãããŠããŸãããã®ãããç¶ç¶çãªåŠç¿ã¯éåžžã«éèŠã§ããå ¬åŒããã¥ã¡ã³ããã³ãã¥ããã£ã®æ å ±ãå®æçã«ãã§ãã¯ããããšã§ãææ°ã®æ å ±ããã£ããã¢ããããããšãã§ããŸãã
åèæç®
- TypeScript: Handbook – The TypeScript Handbook – TypeScriptãæ¥åžžã®ããã°ã©ããŒã«èª¬æããããã®å æ¬çãªããã¥ã¡ã³ããTypeScriptã®åºæ¬çãªæŠå¿µãæ©èœãã³ã³ãã€ã©ãªãã·ã§ã³ã®åœ±é¿ãåã·ã¹ãã ã®åäœãªã©ã«ã€ããŠã®è©³çŽ°ãªæ å ±ãå«ãŸããŠããŸãã