ãå³è§£ã§æ¯èŒãTypeScript vs JavaScript â åããã»åãªãã®éãã培åºè§£èª¬
TypeScriptã£ãŠããèããã©ãJavaScriptãšäœãéãã®ïŒ
TypeScriptã¯ãJavaScriptã«ãåããšããä»çµã¿ã远å ããèšèªã ããJavaScriptã®ã³ãŒãã¯ãã®ãŸãŸTypeScriptã§ãåãããããJavaScriptã®ã¹ãŒããŒã»ããïŒäžäœäºæïŒãã£ãŠåŒã°ããŠããã ã
åã£ãŠããã®ã¯äœãªã®ïŒ
åã£ãŠããã®ã¯ããã®å€æ°ã«ã¯æ°å€ããå ¥ãã¡ããã¡ãããã®é¢æ°ã¯æååãè¿ããã¿ãããªã«ãŒã«ã®ããšã ããJavaScriptã ãšå€æ°ã«äœã§ãå ¥ãããã¡ããããããã£ããæ°å€ã®ã€ããã§æååãæž¡ããŠãã°ã«ãªãâŠãªããŠããšãèµ·ãããã ãTypeScriptãªãããããããã¹ãã³ãŒããæžããæç¹ã§æããŠããããã ãã
ãªãã»ã©ãæžããŠãéäžã§ãã¹ã«æ°ã¥ããã®ã¯ããããã§ãTypeScriptã£ãŠãã©ãŠã¶ã§ãã®ãŸãŸåãã®ïŒ
å®ã¯TypeScriptã¯ãã©ãŠã¶ã§ã¯çŽæ¥åããªããã ãtscã£ãŠããã³ã³ãã€ã©ãéããŠãJavaScriptã«å€æããŠãããã©ãŠã¶ã§å®è¡ããä»çµã¿ã ããã.tsãã¡ã€ã« â tscã§ã³ã³ãã€ã« â .jsãã¡ã€ã« â ãã©ãŠã¶ã§å®è¡ãã£ãŠããæµãã ãã
ãããã倿ããã®ã£ãŠé¢åãããªãã®ïŒ
ããæããããã§ããã®å€æã®ã¹ãããããããããã§ãå®è¡ããåã«ãšã©ãŒãèŠã€ãããããã ãããã«ãšãã£ã¿ïŒVS Codeãªã©ïŒãTypeScriptã®åæ å ±ã䜿ã£ãŠãèªåè£å®ããããééã£ãŠãããã£ãŠãããªã¢ã«ã¿ã€ã ã®ãšã©ãŒè¡šç€ºãããŠããããã ãããããéçºäœéšãåçã«è¯ãããŠããããã ã
ãšãã£ã¿ãè³¢ããªãã®ã¯ããããããã§ãããã§ã«JavaScriptã§æžãããããžã§ã¯ãããã£ããã©ãããã®ïŒå šéšæžãçŽãïŒ
ãããTypeScriptã®ããŸããšããã§ã段éçã«ç§»è¡ã§ãããã ããã¡ã€ã«ã®æ¡åŒµåã.jsãã.tsã«å€ããã ãã§ãOKã ããæåã¯åãã§ãã¯ããããããŠãããŠãå°ããã€å³ããããŠãããããJavaScriptã®ã³ãŒãããã®ãŸãŸåãã¹ãŒããŒã»ããã ããããã§ããç§»è¡æŠç¥ã ãã
ã©ã€ãã©ãªãšãããã±ãŒãžã¯ã©ããªã®ïŒTypeScriptå°çšã®ãã®ãå¿ èŠãªã®ïŒ
npmã®ããã±ãŒãžã¯TypeScriptã§ãJavaScriptã§ãå ±éã§äœ¿ããããå€ãã®æåã©ã€ãã©ãªã¯ãåå®çŸ©ãã¡ã€ã«ïŒ.d.tsïŒãã忢±ããŠãããDefinitelyTypedã£ãŠãããªããžããªã§åå®çŸ©ãå ¬éãããŠããã ãã ãããšã³ã·ã¹ãã ã¯ã»ãŒå®å šã«å ±æãããŠããã
æåãªãã¬ãŒã ã¯ãŒã¯ã¯ã©ã£ã¡ã䜿ã£ãŠãã®ïŒ
Angularã¯TypeScriptå¿ é ã§ãæåããTypeScriptã§æžãåæã ããReactãVueãTypeScriptãå ¬åŒãµããŒãããŠããŠãæ°èŠãããžã§ã¯ãã§ã¯TypeScriptãéžã¶äººãã©ãã©ãå¢ããŠããã ãState of JS調æ»ã§ãTypeScriptã®äœ¿çšçã¯å¹Žã äžãã£ãŠããŠããã¯ãæ¥çã®ããã¡ã¯ãã¹ã¿ã³ããŒãã«ãªãã€ã€ãããã
ãããJavaScriptã ãã§ååãªå Žé¢ã£ãŠããã®ïŒ
ãã¡ããããããã¡ãã£ãšããã¹ã¯ãªããããããã¿ã€ããåŠç¿ç®çã®ã³ãŒããªãJavaScriptã®ã»ããæè»œã ããèšå®ãã¡ã€ã«ãæžããªããŠããããã³ã³ãã€ã«ãäžèŠã ãããå°èŠæš¡ã§äœ¿ãæšãŠã®ã³ãŒãã«TypeScriptã¯ãªãŒããŒãã«ã«ãªãããšããããã ã
TypeScriptã®åã£ãŠããããè€éãªãã®ãæžããã£ãŠèããããšããããã ãã©âŠ
ãããšããã«æ°ã¥ããããTypeScriptã®åã·ã¹ãã ã¯ãã¥ãŒãªã³ã°å®å šã£ãŠèšãããããã匷åã§ããåããºã«ãããåäœæïŒType GymnasticsïŒãã£ãŠåŒã°ããé«åºŠãªãã¯ããã¯ããããã ãConditional TypeãTemplate Literal Typeãé§äœ¿ãããšãåã¬ãã«ã§ããŒãµãŒãèšç®æ©ãŸã§äœãã¡ããããã ãããããããšããŒã ã¡ã³ããŒãèªããªããªããããå®åã§ã¯ãã©ã³ã¹ã倧äºã ãã
ã³ã³ãã€ã«ãé ãã£ãŠè©±ãèããã©ããã®ãããã¯ã©ããªã®ïŒ
å€§èŠæš¡ãããžã§ã¯ãã ãštscã®ã³ã³ãã€ã«æéã課é¡ã«ãªãããšã¯ããããããã§æè¿ã¯esbuildãSWCã¿ãããªGo/Rust補ã®é«éãã©ã³ã¹ãã€ã©ã䜿ã£ãŠãåãã§ãã¯ãšãã©ã³ã¹ãã€ã«ãåé¢ããã¢ãããŒããäž»æµã«ãªã£ãŠããŠãããããšDenoã¯TypeScriptããã€ãã£ãã§ãµããŒãããŠãŠãtscãªãã§çŽæ¥å®è¡ã§ãããã ãããã«TC39ïŒJavaScriptã®æšæºåå£äœïŒã§ã¯ãåæ³šéãJavaScriptã®æ§æãšããŠèªãããææ¡ãé²ãã§ããŠãå°æ¥çã«ã¯ã³ã³ãã€ã«äžèŠã§ãã©ãŠã¶ãåæ³šéãçè§£ããæä»£ãæ¥ããããããªããã
JavaScriptã«åãå ¥ãå¯èœæ§ããããªããŠããããæä»£ã ãã
ããã ããä»ã®æ®µéã§ã¯ãããŒã éçºãäžãå€§èŠæš¡ãããžã§ã¯ããªãTypeScriptãå°ããªã¹ã¯ãªãããªãJavaScriptãã£ãŠãã䜿ãåããçéã ããã©ã¡ããJavaScriptãšã³ã·ã¹ãã ã®äžå¡ã ãããçæ¹ãåŠã¹ã°ããçæ¹ã«ãã¹ã ãŒãºã«ç§»ããã®ãæå€§ã®åŒ·ã¿ã ãã