1. ã¯ããã«
æè¿ã®Webéçºã§ã¯ãJavaScriptã ãã§ã¯ãªãããã®ã¹ãŒããŒã»ããã§ããTypeScriptã䜿ã£ãéçºãæµè¡ã£ãŠããŠããŸããJavaãC#ãªã©ã®ã¹ããã³ã°ã¿ã€ãã®èšèªã«éŠŽæã¿ãããéçºè ã«ãšã£ãŠãTypeScriptã¯éåžžã«éŠŽæã¿ãããèšèªãšãªã£ãŠããŸããæ¬èšäºã§ã¯ãTypeScriptãçšããéçºç°å¢ã®æ§ç¯æé ã詳ãã解説ããŠãããŸãã
1.1 TypeScriptãšã¯
TypeScriptã¯ãMicrosoftã«ãã£ãŠéçºãããJavaScriptã®ã¹ãŒããŒã»ããã§ããJavaScriptã®ãã¹ãŠã®æ©èœã«å ããŠãéçåãã§ãã¯ãã¯ã©ã¹ããŒã¹ã®ãªããžã§ã¯ãæåããžã§ããªãã¯ãªã©ãåå®å šãšéçºå¹çåäžã®ããã®æ©èœãè¿œå ãããŠããŸãã
TypeScriptã¯ããã©ãŠã¶ãçŽæ¥è§£éã§ããJavaScriptã«ã³ã³ãã€ã«ãããã©ã³ã¹ãã€ã©ãšããŠåäœããŸãããã®ãããJavaScriptãå®è¡ã§ããããããç°å¢ïŒãã©ãŠã¶ãNode.jsãªã©ïŒã§TypeScriptã¯äœ¿çšå¯èœã§ãã
1.2 TypeScriptã®ã¡ãªãã
TypeScriptã¯ã倧èŠæš¡ãªãããžã§ã¯ãã§ãé«å質ãªã³ãŒããæžãéã«åœ¹ç«ã€ã以äžã®ãããªã¡ãªãããæã£ãŠããŸãã
éçåãã§ãã¯ïŒTypeScriptã¯éçåèšèªã§ãããããã³ãŒããã³ã³ãã€ã«ããã段éã§åã®ãã¹ããããæ€åºãããŸããããã«ãããå®è¡æã®ãšã©ãŒãé²ãããããã°ã容æã«ããŸãã
ããŒã«ã®åŒ·åïŒTypeScriptã®ãšãã£ã¿ãŒãµããŒãã¯éåžžã«åŒ·åã§ãèªåè£å®ãåæ å ±ããªãã¡ã¯ã¿ãªã³ã°ããŒã«ãªã©ãæäŸããŸããããã«ãããã³ãŒãã£ã³ã°ã®é床ãšç²ŸåºŠãåäžãããŸãã
å®å®ããã³ãŒãïŒTypeScriptã¯ãææ°ã®ECMAScript(JavaScriptã®ä»æ§)ã®æ©èœãå®å®ããŠäœ¿çšã§ããããã«ããŸããããŒãžã§ã³éã®éäºææ§ã«ããåé¡ãé²ããŸãã
ãããã®ã¡ãªããã¯ãTypeScriptã䜿çšããéçºè ãæ±ããå€ãã®åé¡ã解決ããããšãå¯èœã§ããTypeScriptã®å°å ¥ã¯ãããžã§ã¯ãã®èŠæš¡ãã¯ãŒã¯ãããŒã«ãããŸãããäžèšã®ã¡ãªããã掻ãããŠããè¯ãã³ãŒããæžãããšãã§ããŸãã
2. TypeScriptç°å¢æ§ç¯åã®æºå
ã¯ããã«ãTypeScriptãçšããŠéçºãå§ããåã«ãå¿ èŠãªãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«ãšéçºç°å¢ã®ã»ããã¢ãããå¿ èŠãšãªããŸããä»åã¯ãããã«ã€ããŠè©³ãã説æãè¡ããŸãã
2.1 å¿ èŠãªãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«
TypeScriptãåããããã«ã¯ãããçšåºŠã®å¿ èŠãªãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããå ·äœçã«ã¯ãTypeScriptãåããããã®ãã©ãããã©ãŒã ã§ããNode.jsã®ã€ã³ã¹ããŒã«ãå¿ èŠã§ãã
ãŸãããã©ãŠã¶ãéããNode.jsã®å ¬åŒãŠã§ããµã€ããæ€çŽ¢ããŸããå ¬åŒãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ãããã“Download”ãšãããã¿ã³ãã¯ãªãã¯ããŠãã ããããã®åŸããèªåã®PCã®OSã«åãããããŒãžã§ã³ãéžãã§ããŠã³ããŒããé²ããŠãããŸãã
ã€ã³ã¹ããŒã«ãå®äºããããã³ãã³ãããã³ãããã¿ãŒããã«ãéããNode.jsãšããã«ä»å±ããããã±ãŒãžãããŒãžã£ã§ããnpmãæ£ããã€ã³ã¹ããŒã«ããããã確èªããŸãã以äžã®ã³ãã³ããå ¥åãããšãããããã®ããŒãžã§ã³ã衚瀺ãããŸãã
node -v npm -v
以äžã®ããã«ãNode.jsãšnpmã®ã€ã³ã¹ããŒã«ãå®äºããã°ãTypeScriptç°å¢ã®äžéšãæŽã£ãããšã«ãªããŸãã
2.2 éçºç°å¢ã®ã»ããã¢ãã
次ã«ãéçºç°å¢ã®ã»ããã¢ããã«ã€ããŠè¿°ã¹ãŸããããã§ã¯ããšãã£ã¿ãIDEã®éžæãèšå®ããããŠæ¡åŒµæ©èœã®å°å ¥ã«ã€ããŠèª¬æããŸãã
ãŸããTypeScriptã®éçºã«ã¯æ§ã ãªãšãã£ã¿ãå©çšå¯èœã§ãããããã§ã¯ç¹ã«äººæ°ã§å€æ©èœãªVisual Studio CodeïŒVSCodeïŒãæšå¥šããŸããVSCodeã¯MicrosoftãéçºããŠããç¡æã®ãšãã£ã¿ã§ãå€æ°ã®æ¡åŒµæ©èœãæäŸãããŠããããããã«ãã£ãŠéçºå¹çã倧ããåäžããŸãã
VSCodeã¯å ¬åŒãŠã§ããµã€ãããããŠã³ããŒãå¯èœã§ããã€ã³ã¹ããŒã«ãå®äºããããTypeScriptéçºã«äŸ¿å©ãªæ¡åŒµæ©èœãšã㊓TypeScript TSLint Plugin”ã“Prettier”ãªã©ãã€ã³ã¹ããŒã«ããŸãããã
ãããã®æ¡åŒµæ©èœã¯ãVSCodeã®å·ŠåŽã¡ãã¥ãŒã®æ¡åŒµæ©èœã¢ã€ã³ã³ãã¯ãªãã¯ããŠéãããæ€çŽ¢çªã«ååãå ¥ããŠæ¢ãã衚瀺ããããå³åŽã®ã€ã³ã¹ããŒã«ãã¿ã³ãæŒãããšã§è¿œå ã§ããŸãã
以äžã®æ®µéã§ãšãã£ã¿ã®èšå®ã¯å®äºã§ããããã«ãããTypeScriptã®éçºç°å¢ã®åºç€ãæŽããŸããã
3. TypeScriptã®ã€ã³ã¹ããŒã«
TypeScriptã䜿çšããããã«ã¯ããŸãNode.jsãšnpmïŒNode Package ManagerïŒã®ã€ã³ã¹ããŒã«ãå¿ èŠãšãªããŸãããããã¯ãJavaScriptã®å®è¡ç°å¢ã§ããNode.jsãšãNode.jsã§å©çšå¯èœãªããã±ãŒãžãç°¡åã«ç®¡çããããã®npmãå¿ èŠãšãªããŸãã
3.1 Node.jsãšnpmã®ã€ã³ã¹ããŒã«
Node.jsãšã¯ãJavaScriptããã©ãŠã¶å€ã§äœ¿ãããã®å®è¡ç°å¢ã§ããµãŒããŒãµã€ãã§ã®éçºã«ã䜿çšãããŸããNode.jsã®ããã±ãŒãžç®¡çããŒã«ã§ããnpmã¯ãNode.jsã®ã€ã³ã¹ããŒã«ãšãšãã«èªåçã«ã€ã³ã¹ããŒã«ãããŸãã
Node.jsãšnpmã®ã€ã³ã¹ããŒã«ã¯ãå ¬åŒãŠã§ããµã€ãããè¡ãããšãã§ããŸãããŠã§ããµã€ãã®ããŠã³ããŒãããŒãžã«ã¯ãWindowsçãšmacOSçã®ã€ã³ã¹ããŒã©ãçšæãããŠãããããŠã³ããŒãåŸãéåžžã®ãœãããŠã§ã¢ãšåæ§ã«ã€ã³ã¹ããŒã«ãé²ããŠãããŸãã
Node.jsãšnpmã®ã€ã³ã¹ããŒã«ãå®äºããããã¿ãŒããã«ïŒã³ãã³ãããã³ããïŒãéããŠæ¬¡ã®ã³ãã³ããå®è¡ããŠã¿ãŸãããã
node -v npm -v
ãããã®ã³ãã³ãã¯ãããããNode.jsãšnpmã®ããŒãžã§ã³ã衚瀺ããŸããããŒãžã§ã³çªå·ã衚瀺ãããã°ãã€ã³ã¹ããŒã«ã¯æåããŠããŸãã
3.2 TypeScriptã®ã€ã³ã¹ããŒã«
TypeScriptã®ã€ã³ã¹ããŒã«ã¯ãnpmã䜿çšããŠè¡ããŸããã€ã³ã¹ããŒã«ã«ã¯æ¬¡ã®ã³ãã³ããå®è¡ããŸãã
npm install -g typescript
ããã§ã®-gãªãã·ã§ã³ã¯ãTypeScriptãå šäœã®ç°å¢ïŒã°ããŒãã«ïŒã«ã€ã³ã¹ããŒã«ããããšãæå³ããŸããããã«ãããä»»æã®å Žæã§tscã³ãã³ãïŒTypeScriptã®ã³ã³ãã€ã©ïŒã䜿çšã§ããããã«ãªããŸãã
TypeScriptã®ã€ã³ã¹ããŒã«ãå®äºãããã次ã®ã³ãã³ããå®è¡ããŠã€ã³ã¹ããŒã«ãããŠããTypeScriptã®ããŒãžã§ã³ã確èªããŠã¿ãŸãããã
tsc -v
ããŒãžã§ã³çªå·ã衚瀺ãããã°ãTypeScriptã®ã€ã³ã¹ããŒã«ã¯æåã§ãã
ããã§ãTypeScriptã®ç°å¢æ§ç¯ã®ããã®æºåã¯å®äºã§ãã次ã®ã¹ãããã§ã¯å ·äœçãªãããžã§ã¯ãã®ã»ããã¢ããã«é²ã¿ãŸãã
4. ãããžã§ã¯ãã®ã»ããã¢ãã
TypeScriptã®ããã°ã©ãã³ã°ãå§ããåã«ãäºããããžã§ã¯ãã®ã»ããã¢ãããè¡ãå¿ èŠããããŸãããã®ç« ã§ã¯ããããžã§ã¯ããã£ã¬ã¯ããªã®äœæãããå¿ èŠãªèšå®ãã¡ã€ã«ïŒtsconfig.json, package.jsonïŒã®äœæã»èšå®ãŸã§ã解説ããŸãã
4.1 ãããžã§ã¯ããã£ã¬ã¯ããªã®äœæ
ãŸãããããžã§ã¯ãçšã®ãã£ã¬ã¯ããªãäœæããŸããã³ãã³ãã©ã€ã³ãŸãã¯ã¿ãŒããã«ãéããäœæãããå Žæã«ç§»åããããšãmkdir ãããžã§ã¯ãå
ãšããã³ãã³ããå®è¡ããŸããããããŠäœæãããã£ã¬ã¯ããªããä»åäœæãããããžã§ã¯ãã®ããŒã¹ãšãªããŸãã
4.2 tsconfig.jsonã®äœæãšèšå®
次ã«tsconfig.json
ãäœæããŸããtsconfig.json
ã¯ãTypeScriptãããžã§ã¯ãã®èšå®ãè¡ãããã®éèŠãªãã¡ã€ã«ã§ãããããžã§ã¯ããã£ã¬ã¯ããªã«ç§»åããåŸãtsc --init
ãšããã³ãã³ããå®è¡ãããšãtsconfig.json
ãçæãããŸãã
tsconfig.json
ã«ã¯ã以äžã®ãããªèšå®ãå«ãŸããŸãã
{ "compilerOptions": { /* åºæ¬çãªãªãã·ã§ã³ */ "target": "es5", "module": "commonjs", "strict": true, /* ãã®ä»ã®ãªãã·ã§ã³ */ }, "include": ["src/**/*"], "exclude": ["node_modules", "**/*.spec.ts"] }
ãããã®èšå®é ç®ãä»»æã«å€æŽããŠããããžã§ã¯ãã«æé©ãªç¶æ ã«ã«ã¹ã¿ãã€ãºããããšãå¯èœã§ãã
4.3 package.jsonã®äœæãšèšå®
TypeScriptãããžã§ã¯ãã§å¿
èŠãšãªãpackage.json
ã«ã€ããŠãã説æããŸããpackage.json
ã¯ããããžã§ã¯ããäŸåããããã±ãŒãžã®æ
å ±ããã¹ã¯ãªããã®å®çŸ©ãªã©ãèšè¿°ãããã¡ã€ã«ã§ããããã¯ãNode.jsã®ãããžã§ã¯ãã§å
±éã®èšå®ãã¡ã€ã«ã§ãããnpm init
ã³ãã³ããå®è¡ããããšã§çæã§ããŸãã
ååå®è¡æã¯ãããã€ãã®è³ªåã«çããããšã§ãããžã§ã¯ãã®åæèšå®ãè¡ããŸããå
šãŠã®è³ªåãçµãŠEnter
ããŒãæŒããšãpackage.json
ãäœæãããŸãã
æåŸã«ããã®package.json
å
ã«ããããžã§ã¯ãã§äœ¿çšããnpmããã±ãŒãžãã€ã³ã¹ããŒã«ãããã®èšå®ãèšè¿°ããŠãããŸããå
·äœçãªèšå®æ¹æ³ã¯ãåŸè¿°ãããéçºç°å¢ã®ã«ã¹ã¿ãã€ãºãã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã
5. éçºç°å¢ã®ã«ã¹ã¿ãã€ãº
ããã§ã¯ãTypeScriptã®éçºç°å¢ã®ã«ã¹ã¿ãã€ãºæ¹æ³ã«ã€ããŠè§£èª¬ããŸããã«ã¹ã¿ãã€ãºã«ãã£ãŠéçºããã»ã¹ãããå¹çåãããå¿«é©ãªã³ãŒãã£ã³ã°ç°å¢ãæã«å ¥ããããšãã§ããŸãã
5.1 ã©ã€ããªããŒãã®èšå®
ã©ã€ããªããŒãã¯ããœãŒã¹ã³ãŒããä¿®æ£ããéã«èªåçã«ãã©ãŠã¶ãæŽæ°ããæ©èœã®ããšãæããŸãããã®æ©èœãèšå®ããããšã§ãå€æŽå 容ãããã«åæ ããããããéçºãããã¹ã ãŒãºã«é²è¡ããŸãã
ã©ã€ããªããŒããèšå®ããã«ã¯ããŸãwebpackãšããã¢ãžã¥ãŒã«ãã³ãã©ãã€ã³ã¹ããŒã«ããŸããã³ãã³ãããã³ãããã¿ãŒããã«ãéãã以äžã®ã³ãã³ãããããžã§ã¯ãã®ãã£ã¬ã¯ããªã«ãŠå®è¡ããŸãã
npm install --save-dev webpack webpack-cli webpack-dev-server
次ã«ããããžã§ã¯ããã£ã¬ã¯ããªã®ã«ãŒãã«webpack.config.jsãšããèšå®ãã¡ã€ã«ãäœæããŸãããã®ãã¡ã€ã«ã«ã©ã€ããªããŒãã®èšå®ãèšè¿°ããŸãã以äžã¯ãã®äžäŸã§ãã
module.exports = { // ... devServer: { open: true, hot: true, watchContentBase: true, contentBase: path.join(__dirname, 'public'), publicPath: '/dist/', }, // ... };
ãããã®èšå®ãæ£ããè¡ãããã°ããã¡ã€ã«ã®å€æŽããã©ãŠã¶äžã§å³æåæ ãããããã«ãªããŸãã
5.2 ããŒã«ãã§ã€ã³ã®èšå®
次ã«ãããŒã«ãã§ã€ã³ã®èšå®ã«ã€ããŠè§£èª¬ããŸããããŒã«ãã§ã€ã³ãšã¯éçºã«å¿ èŠãªããŒã«çŸ€ãçµ±äžãããããå¹ççã«æäœããããã®å·¥çšã®ããšãæããŸãã
TypeScriptéçºã§ã¯ãã³ãŒããšãã£ã¿ããã«ãããŒã«ãªã©ãããŸããŸãªããŒã«ãçµã¿åãããŠäœ¿çšããŸãããããããå¹ççã«ç®¡çã»æäœããããã«ããŒã«ãã§ã€ã³ãå¿ èŠãšãªããŸããå ·äœçã«ã¯ãVisual Studio Codeã®æ§æãPrettierãESLintãªã©ã®ããŒã«ã®èšå®ãªã©ãå«ãŸããŸãã
æåã®ã¹ããããšããŠãESLintãšPrettierãã€ã³ã¹ããŒã«ããŠãã³ãŒãã®ã¹ã¿ã€ãªã³ã°ãšæ§æãã§ãã¯ãèªååããŸãã次ã«ãVS Codeã®èšå®ã§.vscode/settings.jsonãäœæããèªåãã©ãŒããããæå¹åããŸããããã«ãããä¿åæã«èªåçã«ã³ãŒããã©ãŒããããè¡ãããããã«ãªããŸãã
ãã«ãããã»ã¹ã®èªååã«ã¯ãnpm ã¹ã¯ãªããã Webpack ãªã©ã®ããŒã«ãå©çšãããŸããããããçµã¿åãããŠãã³ãŒãã®ãã©ã³ã¹ãã€ã«ããã³ããªã³ã°ãæé©åãäžé£ã®ããã»ã¹ãšããŠèªååããŸãã
ãããã®æé ãèžãããšã§ãTypeScriptã®éçºç°å¢ãäžå±€å¹æçã«äœ¿ãããªãããšãå¯èœãšãªããŸãã
6. TypeScriptã®åºæ¬çãªäœ¿ãæ¹
TypeScriptã®åºæ¬çãªäœ¿ãæ¹ã«ã€ããŠåŠã³ãŸããããããã§ã¯ããã®åºæ¬çãªææ³ãããåã®æ±ãæ¹ããããŠã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ã®å©çšæ¹æ³ãŸã§ãé ã«è§£èª¬ããŸãã
6.1 åºæ¬çãªææ³
TypeScriptã®ææ³ã¯ãåºæ¬çã«ã¯JavaScriptã®ææ³ã«å ããŠãåã«é¢ããèšè¿°ãããã«ä»ãå ãã圢ãšãªããŸãããã®äžã€ãããå泚éãã§ãã
let name: string = "John";
– ãã®äŸã§ã¯ãå€æ°nameãæåååã§ããããšã瀺ããŠããŸãã
ãŸããTypeScriptã§ã¯ããé¢æ°ã®ãã©ã¡ãŒã¿ããšãæ»ãå€ãã«ãåãå®çŸ©ã§ããŸãã
function getFullName(name: string, surname: string): string { return name + " " + surname; }
– ããã§ã¯ãé¢æ°ã®åŒæ°ãšæ»ãå€ã®åãæå®ããŠããŸãã
6.2 åã®æ±ãæ¹
TypeScriptã§ã¯ãããŒã¿åã®æ±ãæ¹ãéåžžã«éèŠã§ããåå®å šæ§ãä¿ã€ããã«ãããã°ã©ã ã®åéšåã§æ±ãããããŒã¿ã®åãæ瀺çã«ç®¡çããŸãã
åºæ¬çãªåãšããŠã¯ããnumberãããstringãããbooleanãçããããŸãããŸãããanyãåãçšãããšãããããçš®é¡ã®ããŒã¿ãæ±ãããšãã§ããŸãããã ãããanyãåã¯ã§ããã ã䜿ããªãæ¹ãè¯ããšãããŠããŸãããªããªãããããå€çšãããšãTypeScriptã®åã·ã¹ãã ã®æ©æµãåãã«ãããªãããã§ãã
ãã®ä»ã«ãé åãç°¡åã«æ±ãããŸãã
let list: number[] = [1, 2, 3];
– ãã®äŸã¯ãæ°å€ã®é åãè¡šããŠããŸãããŸããã¿ãã«ãšããæŠå¿µããããŸããããã¯ç°ãªãåã®é åãå®çŸ©ããããã®ãã®ã§ãå ·äœçã«ã¯æ¬¡ã®ããã«äœ¿çšããŸãã
let tup: [string, number] = ["hello", 10];
– ãã®äŸã§ã¯ãæååãšæ°å€ã®ã¿ãã«ãå®çŸ©ããŠããŸãã
6.3 ã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹
TypeScriptã§ã¯ãJavaScriptã®ãããã¿ã€ãããŒã¹ã®ãªããžã§ã¯ãæåãããã¯ã©ã·ãã¯ãªåœ¢ã«è¿ã¥ããããã«ããã¯ã©ã¹ããæäŸãããŠããŸããã¯ã©ã¹ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®åºæ¬çãªä»çµã¿ã§ãããããããã£ãšã¡ãœãããæã€ããšãã§ããŸãã
class Car { color: string; constructor(color: string) { this.color = color; } getDescription() { return "This is a " + this.color + " car"; } }
ãŸããã¯ã©ã¹ã¯ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããããä»ã®ã¯ã©ã¹ãç¶æ¿ããããšãã§ããŸãããã€ã³ã¿ãŒãã§ãŒã¹ããšã¯ãããã¯ã©ã¹ãåããŠããªããã°ãªããªãã¡ãœãããããããã£ã®ã»ãããå®çŸ©ããä»çµã¿ã§ãã
interface Vehicle { getDescription(): string; } class Car extends Vehicle { // ... }
ãã®ãVehicleãã€ã³ã¿ãŒãã§ãŒã¹ã¯ããgetDescriptionãã¡ãœãããå«ãä»»æã®ã¯ã©ã¹ã§å®è£ ããããšãã§ããŸãããã®ããã«ããŠãã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ã䜿ãããšã§ãããæ§é åãããã³ãŒããæžãããšãå¯èœã«ãªããŸãã
7. TypeScriptã«ããéçºã®æµã
éçºãããžã§ã¯ããèšå®ãããåºæ¬çãªç¥èãåŠãã ãšããã§ãå®éã®TypeScriptã«ããéçºã®æµãã説æããŠãããŸããããã§ã¯å€§ãŸãã«ãã³ãŒãã®èšè¿°ãã³ã³ãã€ã«ãšå®è¡ããããŠãã¹ãã®ã¹ãããã«ãã©ãŒã«ã¹ããŠèª¬æããŠãããŸãã
7.1 ã³ãŒãã®èšè¿°
TypeScriptã§ã®ã³ãŒãã®èšè¿°ã¯ãJavaScriptãšå€§ããªéãã¯ãããŸããããããTypeScriptç¹æã®åã®æ±ããããªãã·ã§ãã«ãªå€ã®èšå®ãªã©ã®èšè¿°ãéããŠãJavaScript以äžã®å®å šæ§ãšä¿å®æ§ãè¿œæ±ããããšãã§ããŸãã
TypeScriptã§ã¯ãå€æ°ãé¢æ°ã®åŒæ°ã«å泚éãèšè¿°ããããšã§ãæå³ããªãå€ãã»ãããããäºãé²ãããšãã§ããŸãã
function sum(a: number, b: number): number { return a + b; }
ãã®ãããªèšè¿°ã¯ãaãšbãæ°å€ã§ããããšããããŠæ»ãå€ãæ°å€ã§ããããšã匷å¶ããŸãã
7.2 ã³ã³ãã€ã«ãšå®è¡
TypeScriptã®çŽ æŽãããç¹ãšããŠãåãã§ãã¯ã«ãããšã©ãŒã®æ©æçºèŠããããŸããã³ã³ãã€ã«æã«åãšã©ãŒãèŠã€ãããšãã³ã³ãã€ã©ã¯ãšã©ãŒã¡ãã»ãŒãžãåºåãããã®æç¹ã§è§£æ±ºããããšãå¯èœã§ãã
TypeScriptã®ãã¡ã€ã«ã¯.tsæ¡åŒµåãæã¡ããããã³ã³ãã€ã«ããããšã§JavaScriptã®ã³ãŒãïŒ.jsïŒãçæããŸãã
tsc app.ts
ãããŠãçæãããJavaScriptã®ã³ãŒãã¯ãã©ãŠã¶ãŒãŸãã¯Node.jsã§å®è¡ã§ããŸãã
node app.js
7.3 ãã¹ã
å質ã確ä¿ãããããå®è£ ããã³ãŒãã®ãã¹ãã¯æ¬ ãããŸãããTypeScriptã«ãæ§ã ãªãã¹ããã¬ãŒã ã¯ãŒã¯ãçšæãããŠãããJestãMochaãªã©ããã䜿ãããŸãã
äŸãã°Jestã䜿ãå ŽåããŸãnpmã䜿ã£ãŠJestãã€ã³ã¹ããŒã«ããŸãã
npm install --save-dev jest
ãã®åŸããã¹ãã³ãŒããèšè¿°ããjestã³ãã³ãã§ãã¹ããå®è¡ããŸãã
jest
ãã£ãããšãã¹ããæžãããšã§ãã³ãŒãã®å質ã確ä¿ãã€ã€ãæªæ¥ã®èªåãä»ã®ã¡ã³ããŒãå®å¿ããŠã³ãŒããä¿®æ£ããããæ©èœãè¿œå ããããšãå¯èœã«ãªããŸãã
8. ãã©ãã«ã·ã¥ãŒãã£ã³ã°
TypeScriptã®éçºç°å¢æ§ç¯äžãã³ãŒãã®å®è¡äžã«ã¯ãããŸããŸãªãšã©ãŒãçºçããå¯èœæ§ããããŸããããã§ã¯ãããééããå¯èœæ§ããããšã©ãŒãšãã®å¯ŸåŠæ¹æ³ã«ã€ããŠèª¬æããŸãã
8.1 ãããããšã©ãŒãšå¯ŸåŠæ³
ãŸãã¯ãå®å®çã®TypeScriptã䜿çšããŠããã«ããããããããCannot find module ‘typescript’ããšãããšã©ãŒãåºããšãã®å¯ŸåŠæ³ã«ã€ããŠè§£èª¬ããŸãããã®ãšã©ãŒã¯ãTypeScriptã®ããã±ãŒãžãæ£ããã€ã³ã¹ããŒã«ã§ããŠããªãå Žåã«çºçããŸãããã®å¯ŸåŠæ³ãšããŠããŸãã¯ncmã®ãã£ãã·ã¥ãã¯ãªã¢ããåŸãå床TypeScriptãã€ã³ã¹ããŒã«ããŸããå ·äœçãªã³ãã³ãã¯ä»¥äžã®éãã§ãã
npm cache clean --force npm install -g typescript
次ã«ããNo such file or directoryããšãããšã©ãŒãåºãå Žåã®å¯ŸåŠæ³ã«ã€ããŠèª¬æããŸãããã®ãšã©ãŒã¯ãæå®ãããã¡ã€ã«ãèŠã€ãããªããã€ãŸãååšããªãå Žåã«çºçããŸãããã®å¯ŸåŠæ³ãšããŠã¯ãæå®ãããã¡ã€ã«ã®ãã¹ãæ£ããã確èªããããšã§ãããã¹ã®æå®ãééãã°ä¿®æ£ããŸãã
8.2 ãã«ããšãªãœãŒã¹
ããã«å°ã£ããšãã®ããã«ã以äžã«ããã€ãã®ãã«ããšãªãœãŒã¹ã玹ä»ããŸãã
TypeScriptã®å ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ã¯ãåºæ¬çãªäœ¿ãæ¹ãã詳现ãªAPIãªãã¡ã¬ã³ã¹ãŸã§ãéåžžã«è©³çŽ°ãªæ å ±ãæäŸããŠããŸãããŸããStack Overflowã«ã¯TypeScriptã®ã¿ã°ãä»ããããå€ãã®è³ªåãšçããããããã®å€ãã«ã¯å°é家ã«ãã解çãä»ããŠããŸããããã«ãGitHubã®TypeScriptãªããžããªã§ã¯ãå ¬åŒã®Issueãã©ãã«ãŒãéããŠãã°å ±åãæ°ããæ©èœã®ææ¡ãããããšãã§ããŸãã
以äžã®æ å ±ãçšããŠãããã¹ã ãŒãºã«TypeScriptã®éçºãé²ããããšãã§ããããã«ãªãã§ãããã
9. TypeScriptã䜿ã£ãéçºã®ãããããã©ã¯ãã£ã¹
TypeScriptã®å¯èœæ§ãšãã¯ãŒã¯ããããå¹æçã«äœ¿çšããããã®ãã¹ããã©ã¯ãã£ã¹ãé©åã«é©çšããããšãã«æãããçºæ®ãããŸããããã§ãããã§ã¯TypeScriptã䜿ã£ãéçºã§ããããã®ãã©ã¯ãã£ã¹ã«ã€ããŠ2ã€ãå ·äœçã«èŠãŠãããŸãããã
9.1 ã³ãŒãã¹ã¿ã€ã«ã®çµ±äž
éçºããŒã å šäœã§ã®ã³ãŒãã¹ã¿ã€ã«ã®çµ±äžã¯ãã³ãŒãã®ç解ãå©ããããã®éèŠãªæ段ã§ããTypeScriptã§ã¯ãESLintãPrettierãšãã£ãããŒã«ã䜿çšããŠã³ãŒãã¹ã¿ã€ã«ãçµ±äžããããŒã å šäœã§åãã³ãŒãã£ã³ã°èŠçŽãé©çšããããšãã§ããŸãã
ESLintã¯ãããã°ã©ãã³ã°èª€ããäžè²«æ§ã®ãªãã³ãŒãã¹ã¿ã€ã«ãæ€åºããããã®éçæ€èšŒããŒã«ã§ããããããžã§ã¯ãã«ãã£ãŠã«ã¹ã¿ãã€ãºå¯èœãªã«ãŒã«ãæäŸããŸããPrettierã¯ãèªåãã©ãŒãããããŒã«ã§ãããéçºè ãæåã§è¡ããªããã°ãªããªãæéãå€§å¹ ã«åæžããŸãããããã®ããŒã«ã䜿çšããããšã§ãäžè²«æ§ãä¿ã€ã ãã§ãªããäžéšã®éçãšã©ãŒãäºåã«ãã£ããããããšãå¯èœã«ãªããŸãã
9.2 ãªãã¡ã¯ã¿ãªã³ã°ã®æ¹æ³
ãªãã¡ã¯ã¿ãªã³ã°ã¯ãããã°ã©ã ãæ¹åããåå©çšå¯èœãã€ã¡ã³ããã³ã¹ãããã圢ã«äœãå€ãããã©ã¯ãã£ã¹ã§ããç¹ã«ãTypeScriptã§ã¯ãéçåãã§ãã¯ãæäŸãã確å®æ§ãšå®å šæ§ã«ããããªãã¡ã¯ã¿ãªã³ã°ããã»ã¹ã容æã«ãªããŸãã
äŸãã°ãé¢æ°åãå€æ°åãå€æŽãããšãã£ãåçŽãªãªãã¡ã¯ã¿ãªã³ã°ã¯ãå€æŽã®åœ±é¿ããã¹ãŠã®åç §ã«åæ ãããããšãä¿èšŒããŸãããŸããäžèŠãªã³ãŒããæªäœ¿çšã®ã³ãŒãã®åé€ãããã®ã³ãŒããã©ãã§äœ¿çšãããŠããªããã確èªããããšã§è¡ãããšãã§ããŸãã
ããã«é²ãã ãªãã¡ã¯ã¿ãªã³ã°ææ³ãšããŠããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ååãçšããŠãããã°ã©ã ãããå¹ççãªåœ¢ã«æŽçããããšããããŸããäŸãã°ãç¶æ¿ãå€æ æ§ãã«ãã»ã«åãªã©ã®ååã掻çšããããšã§ãå€ãã³ãŒããæ°ããèšèšã«é©åãããããšãã§ããŸãã
èŠã¯ããªãã¡ã¯ã¿ãªã³ã°ã¯çµ¶ããè¡ãã¹ããã©ã¯ãã£ã¹ã§ãããããããããžã§ã¯ãã®å¥å šæ§ãšå質ãä¿ã€ããã®éèŠãªåœ¹å²ãæãããŠããŸããTypeScriptã䜿çšããããšã§ããªãã¡ã¯ã¿ãªã³ã°ãæ¯æŽãããã³ãŒãã®å質ãåäžããŸãã
10.ãŸãšã
ãã®èšäºãéããŠãTypeScriptã®åºæºçãªéçºç°å¢ã®æ§ç¯æ¹æ³ãåŠãã§ããŸãããåŠãã ããšã確èªãããããæçµçãªã¹ããããå床詳ããèŠãŠã¿ãŸãããã
10.1 TypeScriptç°å¢æ§ç¯ã®ã¹ãããã®å確èª
ãŸããTypeScriptã®ç°å¢ãæ§ç¯ããããã®æåã®ã¹ãããã¯ãå¿ èŠãªãœãããŠã§ã¢ãšéçºç°å¢ã®ã»ããã¢ããã§ããNode.jsãšnpmãã€ã³ã¹ããŒã«ããåŸãTypeScriptãã€ã³ã¹ããŒã«ããŸããã
次ã«ããããžã§ã¯ããã£ã¬ã¯ããªãäœæããtsconfig.jsonãšpackage.jsonã®èšå®ãè¡ããŸããããããã®ãã¡ã€ã«ã¯ããããžã§ã¯ãã®æ§æãšåäœã«å€§ããªåœ±é¿ãäžããéèŠãªã³ã³ããŒãã³ãã§ããããšãå¿ããªãããã«ããŸãããã
ããã«ãéçºç°å¢ãã«ã¹ã¿ãã€ãºããæ¹æ³ã«ã€ããŠåŠã³ãŸãããå ·äœçã«ã¯ãã©ã€ããªããŒãã®èšå®ãšããŒã«ãã§ã€ã³ã®èšå®ãè¡ããéçºã®å¹çåã«åãçµã¿ãŸããã
æåŸã«ãTypeScriptã®åºæ¬çãªäœ¿ãæ¹ãšéçºã®æµãã«ã€ããŠåŠã³ãå ·äœçãªã³ãŒãã£ã³ã°ãã³ã³ãã€ã«ããã¹ãã®åã¹ããããäœéšããŸããã
10.2 ä»åŸã®åŠç¿ã«åããŠ
ãããŸã§ã§ãåºæ¬çãªTypeScriptã®éçºç°å¢ãæ§ç¯ããæ¹æ³ã«ã€ããŠã¯ãåããããã ãããšæããŸãããããããããå šãŠã§ã¯ãããŸãããTypeScriptã®ãããªãå¯èœæ§ãåŒãåºãããã«ã¯ããããªãåŠç¿ãšçµéšãå¿ èŠã§ãã
ç¹ã«ãTypeScriptãšäžç·ã«äœ¿ãã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã®éžæãTypeScriptã®é«åºŠãªåæ©èœã®ç解ããããžã§ã¯ãã®å€§èŠæš¡åã«äŒŽãèšå®ã®å€æŽãªã©ãå ·äœçãªãããžã§ã¯ãã«å¿ããŠå¿ èŠãšãªãç¥èãšæè¡ã¯å€å²ã«ããããŸãã
ããããåºæ¬çãªã¹ããããç解ããŠããã°ããããã®æ°ããåŠç¿ã容æã«ãªãã§ãããããã®èšäºãã¹ããªã³ã°ããŒãã«ããŠãããæ·±ãTypeScriptã®äžçã«é£ã³èŸŒãã§ãããŸãããã