1. TypeScriptãšã¯
TypeScriptã¯ãè¿å¹Žæ³šç®ãéããŠããããã°ã©ãã³ã°èšèªã®äžã€ã§ãããããããã®èšèªãç解ããããã«ã¯ããŸãJavaScriptãšã®é¢ä¿æ§ãææ¡ããããšãéèŠã§ãã
1.1. JavaScriptãšã®é¢ä¿
TypeScriptã¯ãJavaScriptã®ã¹ãŒããŒã»ãããšããŠç¥ãããŠããŸããããã¯ãTypeScriptãJavaScriptã®å šãŠã®æ©èœãæã¡ã€ã€ãããã«å ããŠæ°ããæ©èœãç¹æ§ãæã£ãŠãããšããæå³ã§ããå®éã«ãTypeScriptã§æžãããã³ãŒãã¯ãã³ã³ãã€ã«ãçµãŠJavaScriptã«å€æããããã©ãŠã¶ãNode.jsã®ãããªç°å¢ã§å®è¡ãããŸãã
ãã®é¢ä¿æ§ã®ãããã§ãJavaScriptã®ç¥èãæã£ãŠããéçºè ã¯ãTypeScriptãåŠã¶éã«å€§ããªã¢ããã³ããŒãžãæã£ãŠããŸãããŸããæ¢åã®JavaScriptã®ãããžã§ã¯ããTypeScriptã«ç§»è¡ããããšããæ¯èŒçã¹ã ãŒãºã«è¡ãããšãã§ããŸãã
1.2. TypeScriptã®ç¹åŸŽ
TypeScriptã®æãé¡èãªç¹åŸŽã¯ãéçåä»ãã®ãµããŒãã§ããããã«ãããéçºè ã¯å€æ°ãé¢æ°ã®åŒæ°ãæ»ãå€ãªã©ã«åãæå®ããããšãã§ããŸãããã®åæ å ±ã¯ãã³ãŒãã®å質ãåäžãããããã®ããŒã«ããšãã£ã¿ã®ãµããŒãã匷åããããã«äœ¿çšãããŸãã
ãŸããTypeScriptã¯ãã€ã³ã¿ãŒãã§ãŒã¹ããžã§ããªã¯ã¹ãåå空éãªã©ã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®éçºããµããŒãããããã®å€ãã®æ©èœãæäŸããŠããŸãããããã®æ©èœã¯ãã³ãŒãã®æ§é ãæŽçããåå©çšæ§ãé«ããããã«éåžžã«åœ¹ç«ã¡ãŸãã
ããã«ãTypeScriptã¯ãææ°ã®ECMAScriptã®æ©èœããµããŒãããŠãããæªæ¥ã®JavaScriptã®ããŒãžã§ã³ã«ã察å¿ããŠããŸããããã«ãããéçºè ã¯æ°ããæ©èœãå®å šã«äœ¿çšããããšãã§ããå€ããã©ãŠã¶ã§ãåé¡ãªãåäœããJavaScriptã³ãŒããçæããããšãã§ããŸãã
2. TypeScriptã®åºæ¬çãªå
ããã°ã©ãã³ã°èšèªã«ããããåããšã¯ãããŒã¿ã®çš®é¡ã圢åŒãæããã®ã§ããTypeScriptã¯ãJavaScriptã®åçãªåä»ãã«å¯ŸããŠãéçãªåä»ããå°å ¥ããããšã§ãã³ãŒãã®å質ãå®å šæ§ãåäžãããŠããŸãã
2.1. ããªããã£ãå
TypeScriptã«ã¯ãåºæ¬çãªããŒã¿åãšããŠããã€ãã®ããªããã£ãåãååšããŸããããã«ã¯ãnumber
ãstring
ãboolean
ãªã©ãå«ãŸããŸããäŸãã°ãlet age: number = 20;
ã®ããã«ãå€æ°age
ã«number
åãæå®ããããšãã§ããŸãã
2.2. ãªããžã§ã¯ãå
ããªããã£ãåãšã¯å¯Ÿç
§çã«ããªããžã§ã¯ãåã¯è€æ°ã®å€ãæã€ããšãã§ããè€åçãªããŒã¿åã§ããããã«ã¯ãé
åãã¿ãã«ãã¯ã©ã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãªã©ãå«ãŸããŸããäŸãšããŠãlet person: { name: string, age: number } = { name: "John", age: 25 };
ã®ããã«ããªããžã§ã¯ãã®åœ¢åŒãæå®ããŠå€æ°ãå®çŸ©ããããšãã§ããŸãã
2.3. åã®æšè«ãšã¢ãããŒã·ã§ã³
TypeScriptã¯ãå€æ°ã®åæåæã«ãã®åãæšè«ããèœåãæã£ãŠããŸããããã«ãããåžžã«åãæ瀺çã«æå®ããå¿ èŠã¯ãããŸãããããããã³ãŒãã®å¯èªæ§ãå®å šæ§ãé«ããããã«ãåã¢ãããŒã·ã§ã³ã䜿çšããŠåãæ瀺çã«æå®ããããšãæšå¥šãããŸããåã¢ãããŒã·ã§ã³ã¯ãå€æ°ã®åŸã«ã³ãã³ãä»ããŠåãæå®ããããšã§è¡ããŸãã
3. TypeScriptã®æ§æãšãã¿ãŒã³
ããã°ã©ãã³ã°èšèªãšããŠã®TypeScriptã¯ãç¬èªã®æ§æãšãã¿ãŒã³ãæã£ãŠããŸãããããã®æ§æããã¿ãŒã³ãç解ããããšã§ãããå¹ççã«ã³ãŒããæžãããšãã§ããŸãã
3.1. å€æ°ãšé¢æ°ã®å®çŸ©
TypeScriptã§ã¯ãå€æ°ãå®çŸ©ããéã«let
ãconst
ããŒã¯ãŒãã䜿çšããŸããäŸãã°ãlet name: string = "Alice";
ã®ããã«ãå€æ°name
ã«æåååãæå®ããŠå®çŸ©ããããšãã§ããŸãããŸããé¢æ°ãåæ§ã«åãæå®ããŠå®çŸ©ããããšãã§ããfunction greet(name: string): void { console.log("Hello, " + name); }
ã®ããã«é¢æ°ã®åŒæ°ãæ»ãå€ã«åãæå®ããããšãå¯èœã§ãã
3.2. ã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æŠå¿µãšããŠãã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ã¯TypeScriptã®äžæ žçãªéšåã§ããã¯ã©ã¹ã¯ãããŒã¿ãšãããæäœããã¡ãœãããäžã€ã®åäœãšããŠãŸãšããããšãã§ããæ§é ã§ããäžæ¹ãã€ã³ã¿ãŒãã§ãŒã¹ã¯ãç¹å®ã®æ§é ãã¡ãœãããæã€ããšãä¿èšŒããããã®å¥çŽã®ãããªãã®ã§ããããã«ãããç°ãªãã¯ã©ã¹éã§å ±éã®åäœãæ§é ãæã€ããšãä¿èšŒããããšãã§ããŸãã
3.3. ã¢ãžã¥ãŒã«ãšåå空é
倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãéçºããéãã³ãŒãã®æ§é ãåå©çšæ§ãåäžãããããã«ãã¢ãžã¥ãŒã«ãåå空éã䜿çšããããšãæšå¥šãããŸããã¢ãžã¥ãŒã«ã¯ãé¢é£ããå€æ°ãé¢æ°ãã¯ã©ã¹ãªã©ãäžã€ã®åäœãšããŠãŸãšããããšãã§ããæ§é ã§ããäžæ¹ãåå空éã¯ãç°ãªãã¢ãžã¥ãŒã«éã§ã®ååã®è¡çªãé²ãããã®ãã®ã§ããããã«ãããã³ãŒãã®æŽçã管çã容æã«ãªããŸãã
4. TypeScriptã®é«åºŠãªæ©èœ
TypeScriptã¯ãJavaScriptã®åºæ¬çãªæ©èœãæ¡åŒµããéçºè ã«å€ãã®é«åºŠãªæ©èœãæäŸããŠããŸãããããã®æ©èœã掻çšããããšã§ãããå ç¢ã§å¹ççãªã³ãŒããæžãããšãã§ããŸãã
4.1. ãžã§ããªã¯ã¹
ãžã§ããªã¯ã¹ã¯ãåã®åå©çšæ§ãåäžãããããã®åŒ·åãªæ©èœã§ããããã«ãããäžã€ã®é¢æ°ãã¯ã©ã¹ããç°ãªãåã§åå©çšããããšãã§ããŸããäŸãã°ãArray<T>
ã®ããã«ãTãšããåå€æ°ã䜿çšããŠé
åãå®çŸ©ããããšãã§ããŸããããã«ãããArray<number>
ãArray<string>
ã®ããã«ãç°ãªãåã®é
åãäœæããããšãã§ããŸãã
4.2. ãŠããªã³ãšã€ã³ã¿ãŒã»ã¯ã·ã§ã³å
ãŠããªã³åãšã€ã³ã¿ãŒã»ã¯ã·ã§ã³åã¯ãè€æ°ã®åãçµã¿åãããããã®æ©èœã§ãããŠããªã³åã¯ã|
ã䜿çšããŠè€æ°ã®åãçµã¿åãããããšãã§ããnumber | string
ã®ããã«ãæ°å€ãŸãã¯æååã®ã©ã¡ããã®åãæã€ããšãã§ããŸããäžæ¹ãã€ã³ã¿ãŒã»ã¯ã·ã§ã³åã¯ã&
ã䜿çšããŠè€æ°ã®åãçµã¿åãããããšãã§ããããã«ããè€æ°ã®åã®ç¹æ§ãæã€æ°ããåãäœæããããšãã§ããŸãã
4.3. åã¬ãŒããšåã¢ãµãŒã·ã§ã³
åã¬ãŒãã¯ãç¹å®ã®åãä¿èšŒãããã³ãŒããããã¯å
ã§ããã®åã®ç¹æ§ã掻çšããããã®æ©èœã§ããäŸãã°ãif (typeof x === "string")
ã®ããã«ãx
ãæåååã§ããããšãä¿èšŒããããšãã§ããŸããäžæ¹ãåã¢ãµãŒã·ã§ã³ã¯ãéçºè
ãç¹å®ã®åãæã€ããšãä¿èšŒããããã®æ©èœã§ã<string>x
ãx as string
ã®ããã«äœ¿çšããããšãã§ããŸãã
5. TypeScriptã®ããŒã«ãšèšå®
TypeScriptãå¹æçã«äœ¿çšããããã«ã¯ãé©åãªããŒã«ãèšå®ãäžå¯æ¬ ã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptã®äž»èŠãªèšå®ãã¡ã€ã«ãããŒã«ãéçºç°å¢ã®ã»ããã¢ããæ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
5.1. tsconfig.jsonã®èšå®
tsconfig.jsonã¯ãTypeScriptãããžã§ã¯ãã®èšå®ãã¡ã€ã«ã§ãããã®ãã¡ã€ã«ã䜿çšããããšã§ãã³ã³ãã€ã©ã®åäœãåºåãªãã·ã§ã³ãªã©ããããžã§ã¯ãå
šäœã®èšå®ãè¡ãããšãã§ããŸããäŸãã°ã"target": "ES6"
ã®ããã«ãã³ã³ãã€ã«ãããJavaScriptã®ããŒãžã§ã³ãæå®ããããšãã§ããŸãã
5.2. ã³ã³ãã€ã©ãªãã·ã§ã³
TypeScriptã³ã³ãã€ã©ã¯ãå€ãã®ãªãã·ã§ã³ãæã£ãŠãããããã«ããã³ã³ãã€ã«ã®åäœã现ããå¶åŸ¡ããããšãã§ããŸããäŸãã°ã"strict": true
ãªãã·ã§ã³ã䜿çšããããšã§ãããå³æ Œãªåãã§ãã¯ãè¡ãããšãã§ããŸãããŸãã"outDir": "./dist"
ã®ããã«ãã³ã³ãã€ã«ãããJavaScriptãã¡ã€ã«ã®åºåå
ãæå®ããããšãå¯èœã§ãã
5.3. éçºç°å¢ã®ã»ããã¢ãã
å¹ççãªTypeScriptã®éçºãè¡ãããã«ã¯ãé©åãªéçºç°å¢ã®ã»ããã¢ãããå¿ èŠã§ããå€ãã®IDEããšãã£ã¿ã¯ãTypeScriptã®ãµããŒããæäŸããŠãããVisual Studio CodeãWebStormãªã©ã人æ°ã§ãããããã®ããŒã«ã䜿çšããããšã§ãã³ãŒãè£å®ããªãã¡ã¯ã¿ãªã³ã°ããããã°ãªã©ã®é«åºŠãªæ©èœã掻çšããããšãã§ããŸãã
6. TypeScriptã®å®è·µçãªå©çš
TypeScriptã¯ããã®åŒ·åãªåã·ã¹ãã ãšããŒã«ã®ãµããŒãã«ãããå®è·µçãªãããžã§ã¯ãã§ã®å©çšãå¢ããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeScriptãå®éã®ãããžã§ã¯ãã§ã©ã®ããã«æŽ»çšãããããã®æ¹æ³ããã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè©³ãã解説ããŸãã
6.1. å€éšã©ã€ãã©ãªã®å©çš
å€ãã®JavaScriptã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã¯ãTypeScriptãšã®äºææ§ãæã£ãŠããŸããããã«ãããReactãVueãAngularãªã©ã®äººæ°ã®ãããã¬ãŒã ã¯ãŒã¯ãTypeScriptã§å©çšããããšãã§ããŸãããŸãã@types
ãšããåå空éãæã€åå®çŸ©ãã¡ã€ã«ã䜿çšããããšã§ãTypeScriptã®åãã§ãã¯ã掻çšããªããããããã®ã©ã€ãã©ãªãå®å
šã«å©çšããããšãã§ããŸãã
6.2. ãããžã§ã¯ãã®æ§ç¯ãšãããã€
TypeScriptã®ã³ãŒãã¯ããã©ãŠã¶ãNode.jsã§å®è¡ããåã«JavaScriptã«ãã©ã³ã¹ãã€ã«ããå¿ èŠããããŸãããããå¹ççã«è¡ãããã«ã¯ãWebpackãRollupãBabelãªã©ã®ããŒã«ã䜿çšããããšãäžè¬çã§ãããããã®ããŒã«ã䜿çšããããšã§ããœãŒã¹ãããã®çæããããã¡ã€ãè¡ããæé©åãããã³ãŒãããããã€ããããšãã§ããŸãã
6.3. ãããã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããã°ã©ã ã«ã¯å¿ ããšèšã£ãŠããã»ã©ãã°ãçºçããŸããTypeScriptã䜿çšããå ŽåããœãŒã¹ããããå©çšããŠããã©ã³ã¹ãã€ã«ãããJavaScriptã®ã³ãŒããšå ã®TypeScriptã®ã³ãŒããé¢é£ä»ããããšãã§ããŸããããã«ããããã©ãŠã¶ã®ããããããŒããŒã«ãIDEã®ãããã¬ã䜿çšããŠãå¹ççã«ãã°ãç¹å®ããä¿®æ£ããããšãã§ããŸãã
7. ãŸãšã
ãã®èšäºãéããŠãTypeScriptã®åºæ¬ããé«åºŠãªæ©èœãå®è·µçãªå©çšæ¹æ³ãŸã§ãåŠã¶ããšãã§ããŸãããæåŸã«ãTypeScriptã®åŒ·ã¿ãä»åŸã®å±æããããŠç¶ç¶çãªåŠç¿ã®éèŠæ§ã«ã€ããŠè§ŠããŠã¿ãŸãããã
7.1. TypeScriptã®åŒ·ã¿
TypeScriptã¯ãéçåä»ãã®ç¹åŸŽãæã€ããšã§ããã°ã®æ©æçºèŠãã³ãŒãã®å質åäžã«å¯äžããŸãããŸãã倧èŠæš¡ãªãããžã§ã¯ãã§ãå®å šã«ãªãã¡ã¯ã¿ãªã³ã°ãè¡ãããããéçºå¹çã®åäžã«ãç¹ãããŸããããã«ãè±å¯ãªããŒã«ã®ãµããŒãã«ãããéçºè ã®çç£æ§ã倧ããåäžãããããšãã§ããŸãã
7.2. ä»åŸã®å±æ
è¿å¹ŽãTypeScriptã®æ¡çšçã¯æ¥éã«å¢å ããŠãããå€ãã®äŒæ¥ããããžã§ã¯ãã§ã®æšæºèšèªãšããŠäœçœ®ã¥ããããŠããŸããä»åŸããã®ååã¯ç¶ããšèãããããããªãæ©èœè¿œå ãããŒã«ã®ãµããŒããæåŸ ãããŸããTypeScriptã¯ãJavaScriptã®ã¹ãŒããŒã»ãããšããŠã®äœçœ®ã¥ããããç¬èªã®åŒ·åãªèšèªãšããŠã®å°äœã確ç«ãã€ã€ãããŸãã
7.3. ç¶ç¶çãªåŠç¿ã®éèŠæ§
æè¡ã®äžçã¯æ¥ã é²åããŠããŸããTypeScriptãäŸå€ã§ã¯ãããŸãããæ°ããããŒãžã§ã³ã®ãªãªãŒã¹ãæ°æ©èœã®è¿œå ãè¡ãããäžãç¶ç¶çãªåŠç¿ã¯éåžžã«éèŠã§ããå ¬åŒããã¥ã¡ã³ããã³ãã¥ããã£ã®æ å ±ãå®æçã«ãã§ãã¯ããããšã§ãææ°ã®æ å ±ããã£ããã¢ããããã¹ãã«ãç¶æã»åäžãããããšãã§ããŸãã
åèæç®
-
TypeScript: Documentation – The Basics
JavaScriptã®åå€ãç°ãªãæäœãå®è¡ãããšãã®æ¯ãèãã«ã€ããŠè©³ãã説æããŠããå ¬åŒããã¥ã¡ã³ãã§ãã
-
TypeScript Tutorial – W3Schools
TypeScriptã®åºæ¬ãåŠã¶ããã®ãã¥ãŒããªã¢ã«ãå®éã«ã³ãŒããç·šéããŠãã©ãŠã¶ã§çµæã確èªããããšãã§ããŸãã
-
TypeScript: The starting point for learning TypeScript
TypeScriptã®ãã³ãããã¯ã®åºæ¬ã«é¢ããæ å ±ãå«ãŸããŠããå ¬åŒãµã€ãã®ããŒãžã§ãã
-
TypeScript: Handbook – The TypeScript Handbook
TypeScriptãæ¥åžžã®ããã°ã©ããŒã«èª¬æããããã®å æ¬çãªãã³ãããã¯ãJavaScriptã®åºæ¬ããTypeScriptã®ç¹åŸŽãªã©ã詳ãã説æãããŠããŸãã