ãããŠãã¢ã€ãã¢ã¯ãHabréã®ã¿ã¹ã¯ã«åãçµãç§ã®ããã»ã¹ãè¿°ã¹ãããã«ç§ã«æ¥ãŸããã ãããŠãç§ã¯ããã现éšãŸã§ææ¡ããã³ãã¥ããã£ã®ç¥èã«è²¢ç®ããŸãã
ãã®èšäºã§ã¯äœã«ã€ããŠèª¬æããŸããïŒ ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãå®è£ ããã¢ãžã¥ãŒã«ãéåæã€ãã³ãã¢ãã«ãéåæã«ããŒãããç¹å®ã®ã€ãã³ããçºçãããšãã«ã¢ãžã¥ãŒã«ã®ç¶æ ãæŽæ°ãããïŒã§ã¯ãªãïŒå€§èŠæš¡ãªTypeScriptã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã ãã®èšäºã¯ãç§ã®è¡åãšæèã®æ¥èšãšæ¥èšãšããŠæ©èœããŸãã ç§ã®å人çãªç®æšã¯ãããã€ãã®å®çšçãªãããã¿ã€ããäœæãããã®çµéšãåŸã§å®éã®ãããžã§ã¯ãã§äœ¿çšã§ããããã«ããããšã§ãã ã³ãŒãã¯å¯èœãªéãæ£ç¢ºã«èšè¿°ãããå®éã®éçºã®èŠä»¶ã«è¿ããã®ã«ãªããŸãã 説æã¯ãåŸã»ã©ç§ã®æå°ã®äžã§åããŠããåŸèŒ©ã«ãã£ãŠèªãŸãããã®ããã«äžããããŸãã
èšäºã¯çŽ°ããåå²ãããŸãããã§ããã ãæ©ãå ¬éè£å€ã«ãããŸãã æåã®éšåã¯ãåé¡ã®äžè¬çãªå®åŒåãã¢ãžã¥ãŒã«ãããã³ãããã®éåæããŒãã«å°å¿µããŸãã
ããã§ãç§ãšã³ãã¥ããã£ã«ãããã®çŽæãäžããAC / DCããªã³ã«ããŠãç§ã®èããéããŠãç§ã¯å ã«é²ã¿ãŸãã
ããŒã2ïŒ ã¹ã±ãŒã©ãã«ãªTypeScriptã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã ããŒã2-ã€ãã³ãããŸãã¯èªåã®èªè»¢è»ãåçºæãã䟡å€ãããçç±
ããŒã2.5ïŒ ã¹ã±ãŒã©ãã«ãªTypeScriptã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯-ããŒã2.5ã ãã°ãšããªã²ãŒãã«åãçµã
䜿çšæžã¿ãœãããŠã§ã¢ããã³ãã®ä»ã®ã³ã¡ã³ã
ãã®èšäºã§ã¯ãVisual Studio Express 2012 for Webããã¹ãŠã®ææ°ã®æŽæ°ãå«ãäœæ¥ããŒã«ãšããŠäœ¿çšããŸãã ãã®çç±ã¯ãä»æ¥ã§é©åãªTypeScriptããµããŒãããŠããå¯äžã®IDEã§ãã
TypeScriptèªäœã«ã€ããŠã TS 0.8.3ã䜿çšãã3ãæã®çµéšãããTSã¯æ°äžè¡ã®ã³ãŒããåããéåžžã«åªããWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã®æ¬åœã«æå¹ãªããŒã«ã§ããããšãããããŸãã éçã³ãŒãåæã¯ããšã©ãŒã®æ°ãå®éã«1æ¡æžãããŸãã ãŸããã»ãŒå®å šãªã¯ã©ã·ãã¯OOPãèšèªã¬ãã«ã§ã®å®éã®ã¢ãžã¥ãŒã«æ§ã«ãããRequire.jsããã³Node.jsãVisual Studioã®IntelliSenseãšã®ééçãªçµ±åãå¯èœã«ãªããå®éãã€ããªãã®ãŒã¯æããã«CïŒãäžããŠãããŸãã TSããJSãžã®ééçãªå€æã«ããããœãŒã¹ããããååšããŠããŠãããœãŒã¹ãããã®å©ãããªããŠãã³ãŒããç°¡åã«ãããã°ã§ããŸãã ãã®èšäºãæžãã«ã¯ãææ°ããŒãžã§ã³-ãžã§ããªãã¯ããã³ãã®ä»ã®æ©èœãåãã0.9ã䜿çšããŸãã
Require.jsã䜿çšããŠéåæèªã¿èŸŒã¿ãå®è£ ããŸãã Node.jsã¯ããµãŒããŒåŽã®ã·ãã¥ã¬ãŒã·ã§ã³ã«äœ¿çšãããŸãã
JQuery 1.10ïŒIE8ãšã®äºææ§ãå¿ èŠïŒããã³Underscore.jsã¯ããæšæºã©ã€ãã©ãªããšããŠãããžã§ã¯ãã«å«ãŸããŸãã ç§ãã¡ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®åºç€ã¯ãBackbone.jsã§ãã æšæºã®TSïŒjQueryïŒãã£ã¹ããªãã¥ãŒã·ã§ã³ãšDefinitelyTypedãããžã§ã¯ãïŒgithub.com/borisyankov/DefinitelyTypedïŒRequire.jsãUnderscoreãBackboneãNode.jsïŒïŒã®ããããŒd.tsãã¡ã€ã«ã䜿çšããŸãã
WinAmpã¯ãAC / DCã®ãã¬ã€ã«äœ¿çšãããŸãã
TypeScriptã«ã€ããŠå°ã
TSããã°ã©ã ã¯ã* .tsããã³* .d.tsãã¡ã€ã«ã®ã»ããã§æ§æãããŠããŸãã ãããã¯ãC ++ã®* .cppããã³* .hãã¡ã€ã«ã®é¡äŒŒç©ãšããŠè¡šãããšãã§ããŸãã ã€ãŸã åè ã«ã¯å®éã®ã³ãŒããå«ãŸããåŸè ã«ã¯åãååã®å®è£ ãã¡ã€ã«ãæäŸããã€ã³ã¿ãŒãã§ãŒã¹ãèšè¿°ãããŠããŸãã TSããããŒã®ã¿ã§éçºããå Žåãd.tsãã¡ã€ã«ã¯å¿ èŠãããŸããã ãŸããd.tsã¯å®è¡æã«ã³ã³ãã€ã«ããã³äœ¿çšãããŸããã ãã ããæ¢åã®JSã³ãŒããèšè¿°ããã«ã¯d.tsãã¡ã€ã«ãäžå¯æ¬ ã§ãã ãªããªã TSã¯å®å šã«JSã«å€æãããä»»æã®JSã³ãŒããå®å šã«äœ¿çšã§ããŸãããã³ã³ãã€ã©ã¯JSã§äœ¿çšãããåãå€æ°ãããã³é¢æ°ã«ã€ããŠç¥ãå¿ èŠããããŸãã D.tsãã¡ã€ã«ã¯ããã®èª¬æã®ç®çãæããã ãã§ãã ãã以äžè©³ããã¯è¿°ã¹ãŸãããããã¹ãŠTSä»æ§ã«ãããŸãã
äžè¬ã«ãexample.tsãã³ã³ãã€ã«ãããšãã次ã®ãã¡ã€ã«ãäœæã§ããŸãã
- example.d.ts-ä»ã®ãããžã§ã¯ãã§äœ¿çšããããããŒãã¡ã€ã«
- example.js-ã©ã³ã¿ã€ã ã§äœ¿çšããJS
- example.map.js-ãããã°çšã®ãœãŒã¹ããã
ãããžã§ã¯ãæ§é
Visual Studioã§TypeScriptãããžã§ã¯ããäœæããŸãã
![ç»å](https://habrastorage.org/storage2/091/f8e/b3d/091f8eb3d1abb56b4606ab8fc32242e6.png)
CodePlexã§å ¬éãããã¹ãŠã®ãœãŒã¹ïŒ tsasyncmodulesexampleapp.codeplex.com ã
ããã©ã«ãã³ãŒããè¿œå ãã2çªç®ã®ãããžã§ã¯ã-ãµãŒããŒãäœæããå¿ èŠãªãã¹ãŠã®ãœãŒã¹ã©ã€ãã©ãªãã¡ã€ã«ãæ¥ç¶ããŠã次ã®æ§é ãååŸããŸãã
![ç»å](https://habrastorage.org/storage2/c84/a2f/b5c/c84a2fb5cf078b88ed767bd878c42fa9.png)
å®è·µã§ã¯ãå ±æã©ã€ãã©ãªã®d.tsãã¡ã€ã«ã¯ããããžã§ã¯ããšåçã«æé©ã§ããããšã瀺ãããŠããŸãã åŸã§ãã¹ããèšè¿°ãããšãã«éåžžã«åœ¹ç«ã¡ãŸãããå¥ã®æéã«ã€ããŠãããã³è€æ°ã®ãããžã§ã¯ããåãã©ã€ãã©ãªã䜿çšããå Žåã«ã€ããŠãåæ§ã§ãã
ããã§ã¯ãVisual Studioã䜿çšããŠããŸãã¯äœ¿çšããã«TypeScriptãããžã§ã¯ããã³ã³ãã€ã«ããæ¹æ³ã«ã€ããŠå°ã説æããå¿ èŠããããŸãã æåã®ã±ãŒã¹ã§ã¯ãã¹ã¿ãžãªã¯éçºè ã®ããã«ãã¹ãŠãè¡ãããã¡ã€ã«ãžã®ãªã³ã¯ããªãå Žåããã¡ã€ã«ã1ã€ãã€ã³ã³ãã€ã©ãŒã«æž¡ããŸãã ã€ãŸã ãã¹ãŠã®tsãã¡ã€ã«ã¯åžžã«ã³ã³ãã€ã«ãããŸãã ã³ãã³ãã©ã€ã³ãããããžã§ã¯ãããã«ãããå Žåãä»ã®ãã¹ãŠã®ãã¡ã€ã«ãžã®ãªã³ã¯ãæã€ãã¡ã€ã«ã§ã¢ã»ã³ããªãéå§ããå¿ èŠããããŸãã éåžžã////>ãå«ããããžã§ã¯ãã«ãŒãã«Build.d.tsãã¡ã€ã«ãäœæããŸãã ã¢ã»ã³ãã«ããå¿ èŠããããã¹ãŠã®ãããžã§ã¯ããã¡ã€ã«ã«ãªã³ã¯ããã³ã³ãœãŒã«ãä»ããŠã³ã³ãã€ã©ã«æž¡ããŸãã ãã®æ¹æ³ã«ãããTSã³ã³ãã€ã©ã®èšå®ãã¹ã¿ãžãªã®çŸåšã®ãã©ã°ã€ã³ãããã¯ããã«æè»ã«ç®¡çããããšãã§ããŸããããã¯ãä»åŸå¿ èŠã«ãªãã§ãããã
Node.exeãšå®å šãªTSé åžããããè¿œå ããããããžã§ã¯ãã«æ £ããéã«ã¹ã¿ãžãªãä»ã®ã€ã³ã¹ããŒã«æžã¿ãœãããŠã§ã¢ã«çžãããªãããã«ãªããŸããã ã¹ã¿ãžãªãšã®ç°¡åãªèµ·åãšçµ±åã®ããã®Cmdãã¡ã€ã«ãåŸã§èª¬æããŸãã
ãã¬ãŒãã³ã°ã¿ã¹ã¯ã®èª¬æ
æè²çãªäŸãšããŠãããã€ãã®ç¬ç«ããã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒãã³ãããµãŒããŒã«ããŒã¿ãã¢ããããŒãããããã®äžéå±€ãããã³æŽåçãªã¢ã¯ãã£ããã£ãã·ãã¥ã¬ãŒãããåœã®ãµãŒããŒã§æ§æããããµã€ãäžã®ããŒãœãã«ã¡ãã»ãŒãžã³ã°ã·ã¹ãã çšã®ã·ã³ãã«ãªã¯ã©ã€ã¢ã³ããäœæããŸãã ãµãŒããŒãšã®éä¿¡ã¯ãå®ãããªãµãŒãã¹ãä»ããŠè¡ãããŸãããé«å質ã®èšè¿°ã¯äž»ãªã¿ã¹ã¯ã§ã¯ãããŸããã 圌ãã¯ã¡ããã©åäœããã®ã«ååã§ãã ã·ã¹ãã ã«ã¯2ã€ã®ç»é¢ããããŸããæåŸã®3ã€ã®ã¡ãã»ãŒãžã®çããªã¹ããšãæ¬æ Œçãªã¯ã©ã€ã¢ã³ãã®ç»é¢ã§ãã ããããåãæ¿ããããšãã§ããã¡ãã¥ãŒããããŸãã èªå¯ãªã© ãã®èšäºã¯æ€èšããŸããã
ç»é¢ã¯å®å šã«ç¬ç«ããã¢ãžã¥ãŒã«ã§ãããäºããèªèããŸããããããŒã¿ã¢ã¯ã»ã¹ã¬ã€ã€ãŒãèªèããŸãã ãã¹ãŠã®ç»é¢ãšããŒã¿ã¢ã¯ã»ã¹ãªããžã§ã¯ãã¯å¥ã ã®ã¢ãžã¥ãŒã«ã«ã©ãããããéåæã«ããŒããããã€ãã³ããããŒãžã£ãŒãä»ããŠã€ãã³ããçºè¡ããã³ãµãã¹ã¯ã©ã€ãããããšã«ããçžäºã«éä¿¡ããŸãã åºç瀟/賌èªè ã®ãã¿ãŒã³ã«ããã
ã¢ãžã¥ã©ãŒããŒãã®æ§æ
ãã¹ãŠãéåžžã«ç°¡åã§ãã ããã©ã«ãã§åãåã£ãã¯ã©ã€ã¢ã³ããããžã§ã¯ãã®App.tsãã¡ã€ã«ã«ã次ã®ã³ãŒããè¿œå ããŸãã
export class App { public static Main(): void { alert('Main'); } }
ãããžã§ã¯ãã®ã«ãŒãã«RequireJSConfig.tsãã¡ã€ã«ãäœæããŸãã
/// <reference path="../Lib/require.d.ts" /> /// <reference path="App.ts" /> require(["App"], function(App: any) { App.App.Main(); });
Default.htmïŒ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>TSAsyncModulesExampleApp</title> <link rel="stylesheet" href="app.css" type="text/css" /> <script src="js/jquery-1.10.1.min.js"></script> <script src="js/underscore-min.js"></script> <script src="js/backbone.js"></script> <script src="js/require.js" data-main="RequireJSConfig"></script> </head> <body> </body> </html>
ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
![ç»å](https://habrastorage.org/storage2/e01/bd2/119/e01bd2119f321fbb98fc25cc963938aa.png)
ããã§ãšãããããŸããéåæã«ããŒãå¯èœãªã¢ãžã¥ãŒã«ãåããã¢ããªã±ãŒã·ã§ã³ãæã«å ¥ããŸããã
ç§ãã¡ãè¡ã£ãããšãããã«è©³ããèŠãŠã¿ãŸãããã
ãŸããTSã§ãã¡ã€ã«ãã©ã®ããã«ã³ã³ãã€ã«ããããã詳ãã説æããŸãã ãã¡ã€ã«ã«ãšã¯ã¹ããŒããã£ã¬ã¯ãã£ããå«ãŸããŠããå Žåãããã¯ã³ã³ãã€ã©èšå®ã«å¿ããŠãCommonJSãŸãã¯AMDã¢ãžã¥ãŒã«ã«äžæã«ã³ã³ãã€ã«ãããããšãæå³ããŸãã VSã®ããã©ã«ãã§ã¯ãã³ã³ãã€ã«ã¯AMD圢åŒã§è¡ãããŸããããã¯ãRequire.jsã䜿çšããã³ã³ããã¹ãã§ã¯äŸ¿å©ã§ãã TSã¯ãAMDã¢ãžã¥ãŒã«ãã©ããããããã®ãæ°å³ã®æªããæåã³ãŒããèšè¿°ããå¿ èŠãå®å šã«æé€ããäŸåé¢ä¿ã®æ£ããã€ã³ã¹ããŒã«ãåŠçããŸãã ããã¯ãApp.tsã§èŠ³å¯ãããåäœã§ãã
define(["require", "exports"], function(require, exports) { var App = (function () { function App() { } App.Main = function () { alert('Main'); }; return App; })(); exports.App = App; }); //@ sourceMappingURL=App.js.map
RequireJSConfig.tsã«ã¯ãšã¯ã¹ããŒããã£ã¬ã¯ãã£ããå«ãŸããŠããããéåžžã®ããã©ãããJSã«ã³ã³ãã€ã«ãããŸãã
/// <reference path="../Lib/require.d.ts" /> /// <reference path="App.ts" /> require(["App"], function (App) { App.App.Main(); }); //@ sourceMappingURL=RequireJSConfig.js.map
ã³ã¡ã³ãã¯ããããã°ç®çã§ã®ã¿ã³ãŒãã«æ®ããŸãã ãããã°ã¢ããªã±ãŒã·ã§ã³ãã«ãã¢ãŒãããããŸãã ãªãªãŒã¹æ§æã§ã¯ããã¹ãŠã®ã³ã¡ã³ããæ¶å»ãããŸãã
ããããç§ãã¡ã®ããŒ...ã¢ãžã¥ãŒã«ã«æ»ããŸãã äœãèµ·ãã£ãïŒ
- default.htmãããŒãããŸãã
- Cssããã³éçã«èšå®ãããjsãã¡ã€ã«ãããŒããããŸãããããã¯ã䞻芳çãªæèŠã§ã¯ãéåæã«ããŒãããæå³ããããŸããã ãããã¯ç§ãã¡ãäœæããã»ãšãã©ãã¹ãŠã®ã¢ãžã¥ãŒã«ã«å¿ èŠã§ãã
- ã¢ã€ãã 2ã®jsã®äžã§ãrequire.jsãããŒããããŸãã
- Require.jsã¯ãdata-main = "RequireJSConfig"å±æ§ã®å€ãèªã¿åãã察å¿ããJSãã¡ã€ã«ãèªã¿èŸŒã¿ãŸãããããã¯éå§ãã¡ã€ã«ãšããŠæ±ãããŸãã
- RequireJSConfigã§ã¯ãã°ããŒãã«ã³ã³ããã¹ãã§æåãšæåŸã«requireã¡ãœããã䜿çšããŸãã ããã«ããã¹ãŠã®ã¢ãžã¥ãŒã«åŒã³åºãã¯ä»ã®ã¢ãžã¥ãŒã«ããã®ãã®ã§ãªããã°ãªããŸããã
- requireé¢æ°ã§ã¯ãAppã¢ãžã¥ãŒã«ïŒæåã®ãã©ã¡ãŒã¿ãŒïŒãèªã¿èŸŒãã åŸãåãååã®å€æ°ãšããŠèªã¿èŸŒãã ã¢ãžã¥ãŒã«ã転éããã³ãŒã«ããã¯ãåŒã³åºãå¿ èŠããããšèšããŸãã ããã§ã¯ãè¯å¿ãšã®ååŒã«é²ã¿ãTSã§ãããé¡ååããŸããã ãã®å Žæã§ã¯ãTSã®ã¢ãžã¥ãŒã«åã®ã€ããªãã®ãŒãšãéåæã¹ã¯ãªããèªã¿èŸŒã¿ã®ãããŒãžã£ãŒãšããŠã®Require.jsã®ç¹å®ã®å®è£ ãšã®éã«ççŸããããŸãã 詳现ã¯ä»¥äžãã芧ãã ããã
- Require.jsã¯Appã¢ãžã¥ãŒã«ãããŒãããŸãã ã¢ãžã¥ãŒã«ã®åœåèŠåã®è©³çŽ°ã«ã€ããŠã¯ãRequire.jsã®ããã¥ã¡ã³ããã芧ãã ããã ã€ãŸããã«ãŒãããã®ãã¹ã瀺ããŸããããã¯ãããã©ã«ãã§äœ¿çšãããµã€ãã®ã«ãŒããšã¯ç°ãªããã¡ã€ã«æ¡åŒµåãæå®ããã«æå®ã§ããŸãã 次ã«ãRequireJSã¯head.appendChildïŒïŒã䜿çšããŠãåäŸåãã¡ã€ã«ãã¹ã¯ãªããã¿ã°ãšããŠããŒãããŸãã å¿ èŠãªã¢ãžã¥ãŒã«ã¯æåŸã«ããŒããããŸããã€ãŸã äŸåé¢ä¿ã®åŸãã€ãŸãããã¹ãŠã®äŸåé¢ä¿ãåžžã«ããŒããããããšãåžžã«ç¢ºèªã§ããããšãæå³ããŸãã Require.jsãšTSã¯ããã®åé¡ã§å®å šã«äžè²«ããæ¹æ³ã§æ©èœããŸãã TSã®æ§æãšã³ã³ãã€ã«ããã»ã¹ã¯ããã®ã·ããªãªã«ç¹ã«é©åããŠããŸãã
- requireã¡ãœããã«æž¡ãããã³ãŒã«ããã¯ã¯ãAppã¢ãžã¥ãŒã«ã®Appã¯ã©ã¹ã§ããMainã®éçã¡ãœãããåŒã³åºããŸãã
- åŒã³åºãããã¢ã©ãŒãïŒãã¡ã€ã³ãïŒ;
requireã¡ãœããã®ã³ãŒã«ããã¯ãã©ã¡ãŒã¿ã¯ããã®ã³ã³ããã¹ãã§ã¯TSã³ã³ãã€ã©ã«ç¥ãããŠããªããããã¿ã€ããããŠããŸããã é¡ååããã«ã¯ã次ã®åœ¢åŒã®TSã³ã³ã¹ãã©ã¯ãã䜿çšããå¿ èŠããããŸãã
import App = require('App');
ãã®èšèšã¯ãä»ã®ã¢ãžã¥ãŒã«ãããŒãããããã«ã¢ãžã¥ãŒã«ã®ã³ã³ããã¹ãã§ã®ã¿äœ¿çšã§ããAMD / CommonJSã¢ãžã¥ãŒã«ã©ãããŒã«å¯Ÿå¿ããäŸåé¢ä¿ã圢æããŸãã ã©ãããŒãªãã®éåžžã®ãã©ããã³ãŒããã€ãŸã ççŸãçããŸãã ã€ãŸããTSã¯ã¢ãžã¥ãŒã«ã³ãŒãçæã®åéã§Require.jsãšå®å šã«äžè²«ããŠããŸãããæåã®ã¢ãžã¥ãŒã«èªã¿èŸŒã¿ã¹ã¯ãªããããµããŒãããŠããŸããã ãããã£ãŠããã®ç¶æ³ã§æ®ã£ãŠããã®ã¯ãããã©JSã®ã¹ã¿ã€ã«ã§å€ãè¯ãã¢ãããŒãã䜿çšããããšã§ãã
è¿œå ã¢ãžã¥ãŒã«ãããŠã³ããŒããã
ããã§ãMainã¡ãœãããšåŒã°ããæåã®ã¢ãžã¥ãŒã«ãããŒããããšãã¢ããªã±ãŒã·ã§ã³ãåäœãéå§ããŸããã æè²TKã«ãããšãä»»æã®æ°ã®ã¢ãžã¥ãŒã«ãããŒãã§ããå¿ èŠããããŸãã ãã ããããŠã³ããŒããéå§ããåã«ãTSã®ã¢ãžã¥ãŒã«ãšã¯äœããç解ããå¿ èŠããããŸãã
- ãŸããã¢ããªã±ãŒã·ã§ã³ã®èªåŸçãªéšåã§ãããé¢æ°ãšå€æ°ãå€éšã«ãšã¯ã¹ããŒãããã¢ãžã¥ãŒã«ãã¿ãŒã³ãå®è£ ããã³ãŒãã§ãã ããã«ãå®è£ å šäœãå€éšããé ãããŠããŸãã å®éãããã¯æãçŽç²ãªåœ¢åŒã®ã«ãã»ã«åã§ãã
- 第äºã«ãã¢ãžã¥ãŒã«ãããŒãããåŸãå€æ°ã«å²ãåœãŠãããŸãã ã€ãŸã ãªããžã§ã¯ããšããŠäœ¿çšã§ããŸãã å®éãã¢ãžã¥ãŒã«ã¯JSã®èŠ³ç¹ããã¯ãªããžã§ã¯ãã§ãã
- 第äžã«ãã¢ãžã¥ãŒã«ã¯ãã¡ã€ã«ã§ãã
- 第4ã«ãã¢ãžã¥ãŒã«ã¯TSã®åå空éã§ãã çŽç²ãªåå空éãå®è£ ããä»ã®ã¢ãžã¥ãŒã«å ã§ããšã¯ã¹ããŒãã§ããªãã¢ãžã¥ãŒã«ã宣èšãããŠããå ŽåããããŸãã ã€ãŸã ã¢ãžã¥ãŒã«ã®ãã¹ãã¬ãã«ã®æ°ã«å¶éã¯ãããŸãããããããã¬ãã«ã¢ãžã¥ãŒã«ã®ã¿ãAMD / CommonJSã¢ãžã¥ãŒã«ã«å€æãããã¹ã¿ã³ãã¢ãã³ãã¡ã€ã«ã«æã¡èŸŒãŸããŸãã
å®éãã¢ãžã¥ãŒã«ã¯äžåºŠã«ãã¹ãŠã§ãã ã¢ãžã¥ãŒã«ã®äœ¿çšããããŸãã§ãã 確ãã«èšããããšã¯ãã¢ãžã¥ãŒã«ãã¢ããªã±ãŒã·ã§ã³ãèªåŸçã§åå©çšå¯èœãªã³ã³ããŒãã³ãã«åå²ãããããç§ãã¡ã®ç®æšãå®å šã«æºãããšããããšã§ãã
æ°ãããã¡ã€ã«Framework / Events.tsãäœæããŸããããã¯ãå°æ¥ãæœè±¡ã€ãã³ãã¢ãã«ã®å®è£ ã®éå§ç¹ãšããŠäœ¿çšããŸãã
export interface IEventPublisher { On(); Off(); Trigger(); } export class EventPublisherBase implements IEventPublisher { On() { } Off() { } Trigger() { } constructor() { alert('EventPublisher'); } }
ãããŸã§ã®ãšããããã¹ãŠã®ã¡ãœããã¯åãªãã¹ã¿ãã§ãã ä»äºã®ååã¯ç§ãã¡ã«ãšã£ãŠéèŠã§ãã
App.tsã®å€æŽïŒ
import Events = require('Framework/Events'); export class App { public static Main(): void { var e = new Events.EventPublisherBase(); } }
ã¢ãžã¥ãŒã«èªã¿èŸŒã¿ãã£ã¬ã¯ãã£ãããããŸãïŒ
import Events = require('Framework/Events');
ãã¹ã¯ã«ãŒããã瀺ãããŸãã äžèšã®ããã«ãã¢ãžã¥ãŒã«ã¯å€æ°ã«å²ãåœãŠãããŸãã 次ã«ãã¢ã©ãŒãã宣èšããã³ã³ã¹ãã©ã¯ã¿ãŒã§ãEventsåå空éããEventPublisherBaseã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
ãã®å ŽåãEventså€æ°ã¯åŒ·ãåä»ããããŠããŸãã ã³ã³ãã€ã©ã¯ãããŒãå¯èœãªã¢ãžã¥ãŒã«ã®ã¿ã€ããå³å¯ã«ç£èŠããŸãã ã³ã³ãã€ã©ãŒã¯ã¢ãžã¥ãŒã«å ã®åå¶åŸ¡ã®ããã®åç §ãã£ã¬ã¯ãã£ããå¿ èŠãšããªãããæ£ããã³ã³ãã€ã«ã®ããã«ãããå¿ èŠãšããããšã«æ³šæãã¹ãã§ãã ã€ãŸã ã³ã³ãã€ã©ã¯ãããªãã§ã¯äŸåé¢ä¿ã远跡ã§ããŸããã çŸåšãVSã¯ã³ã³ãã€ã©ã®ä»£ããã«ãæ瀺çãªãã¡ã€ã«åã«çœ®ãæããŠäœæ¥ãè¡ããŸãã ããã解決ããã«ã¯ãåè¿°ã®Build.d.tsãã¡ã€ã«ãäœæããããã«é¢ããã³ã³ãã€ã«ãéå§ããŸãã
/// <reference path="Framework/Events.ts" /> /// <reference path="App.ts" /> /// <reference path="RequireJSConfig.ts" />
ã³ã³ãã€ã«ã«äœ¿çšã§ãããµã³ãã«cmdãã¡ã€ã«ïŒBuild-Client.cmdïŒã¯ããœãªã¥ãŒã·ã§ã³ã®ã«ãŒãã«æ·»ä»ãããŠããŸãã
å®éãéåæèªã¿èŸŒã¿ã«é¢ããŠã¯ããã ãã§ãã ãã¹ãŠãéåžžã«ã·ã³ãã«ã§ã·ã³ãã«ã§ãã
ç§ã®ã°ã©ãã©ããã¢ã³äœåãã³ãã¥ããã£ã«ãšã£ãŠèå³æ·±ããã®ã«ãªãããšãé¡ã£ãŠããŸãã èšäºã®æ¬¡ã®éšåã§ã¯ãæœè±¡çãªã€ãã³ãã¢ãã«ã®æ§ç¯ãšãéåæWebã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããçç±ãæ€èšããäºå®ã§ãã
æåŸãŸã§èªãã§ãããŠããããšãïŒ