ãããè¡ãã·ããªãªã¯ãããããããŸãã
import myExternalModule = require("./myExternalModule");
// not using myExternalModule here
ã³ãŒãã§myExternalModule
ã䜿çšããŠããŸããããrequirejsã䜿çšããŠã³ãŒããå«ããããšæã£ãŠããŸãã ç§ã¯ãããããã«ããå¿
èŠããããŸãã
forceimport
ããŒã¯ãŒããããã°ããšãŠããã£ãããã§ãããã
æžãããšã§åŒ·å¶çã«æŸåºã§ããã¯ãã§ã
var myExternalModule = require("./myExternalModule");
ãã ãããã/myExternalModuleããæ£ãããªããã¹ã®å Žåãããã¯æå¥ãèšããŸããã
æ£ããã¢ãããŒãã¯ãå¯äœçšã®ãªããããŒåç §ãå°å ¥ããããšã§ãã
import myExternalModule = require("./myExternalModule");
myExternalModule;
ããã¯ããã¯ã§ããããã®ããªãçããŠãŒã¹ã±ãŒã¹ã«æ°ããæ§æãå°å ¥ãããå¯èœæ§ã¯ã»ãšãã©ãããŸããã èšèšç®æšãåç §ããŠãã ãã
TypeScriptãvar myExternalModule = require("./myExternalModule");
ã®ãã¹ãæ€èšŒããå ŽåããŠãŒã¶ãŒã¯ããã¯ã«é Œãããšãªãã emit_ããã³_getã³ã³ãã€ã«ææ€èšŒã匷å¶ã§ããŸãã
var
ã
ããã«ãå¿ èŠã«å¿ããŠamd-dependencyå±æ§ã䜿çšã§ããŸãã
䜿ãããŠããªããã®ãã©ã®ãããªç®çã§èŒžå ¥ããŠããŸããïŒ
ããšãã°ãAngularã¢ããªã§ã¯ãä»ã®ãã¡ã€ã«ã«ããã€ãã®ãã£ã¬ã¯ãã£ãããããŸãã ãããã®ãã£ã¬ã¯ãã£ããã€ã³ããŒãããå¿
èŠããããŸããããããªããšãHTMLããŒã¯ã¢ãããæ©èœããŸããã ãã ããJavaScriptã§ã¯äœ¿çšããŸããã
éåžžãAngularã§ã¯ãã»ãšãã©ã®ã¢ãžã¥ãŒã«ã¯åé¢ãããŠãããçžäºã«äŸåé¢ä¿ã¯ãããŸããããã¢ããªå
šäœãæ©èœãããã«ã¯ã€ã³ããŒãããå¿
èŠããããŸãã
ïŒ+1ïŒ
ããã¯ç§ãæ··ä¹±ãããŸãã
TypeScriptã³ã³ãã€ã©ããããæé€ããã®ã¯ãªãã§ããïŒ
å€éšã¢ãžã¥ãŒã«ã¯ã€ã³ã¹ã¿ã³ã¹åãããŠããªãã¢ãžã¥ãŒã«ã§ã¯ãããŸããã
requireã«ã¯å¯äœçšããããŸãã
importå¥ã¯ãAMDããã³CommonJSã®èŠä»¶ãšäºææ§ãããããã§ãã ããã§ã¯ãããŸããã
ãã®åé¡ã¯ãrequireïŒïŒ-ingã¢ãžã¥ãŒã«ãå®éã«ã¯äœããšã¯ã¹ããŒãããã代ããã«es5-shim
ã es6-shim
ãªã©ã®ã°ããŒãã«ãªããžã§ã¯ãã®æ©èœãã·ã ããå Žåã«ãåä»ã§ãã
ããã¯ç§ãæ··ä¹±ãããŸãã
TypeScriptã³ã³ãã€ã©ããããæé€ããã®ã¯ãªãã§ããïŒ
ã¢ãžã¥ãŒã«ããã¿ã€ãæ å ±ã®ã¿ãã€ã³ããŒããããå Žåããããããããã¯æé©åã§ãã
import foo = require('foo');
function bar(paramOne: foo.ParamOne, paramTwo: foo.ParamTwo){}
ããã¯åãªãæé©åã§ã¯ãããŸããã ã€ã³ããŒããããã¢ãžã¥ãŒã«ãã¿ã€ãã®ã¿ã«äœ¿çšããŠããå ŽåïŒã€ãŸããå€ã®äœçœ®ã§äœ¿çšãããŠããªãå ŽåïŒãã¢ãžã¥ãŒã«ã¯å®è¡æã«ååšããªãã¢ã³ããšã³ãã¿ã€ãã®ã¿ã®ã¢ãžã¥ãŒã«ã§ããå¯èœæ§ããããããrequireããžãã¯ãçºè¡ã§ããŸããã ã¢ãžã¥ãŒã«ã€ã³ããŒããçºè¡ãããšãååšããªãã¢ãžã¥ãŒã«ãèªã¿èŸŒãããšãããšãã«ã©ã³ã¿ã€ã ãšã©ãŒãçºçããŸãã
ããã«ã¯amd-dependency
ãã©ã°ã䜿çšã§ããŸãã
/// <amd-dependency path="foo" />
import x = require('foo');
ã¡ãã£ãšããããã¯ã®ããã«èŠãã<amd-dependency>
代ããã«ã <reference name="...">
IMOã䜿çšããã®
@danquirk TypeScriptãšã³ãžã³ã«ã€ã³ããŒãã¹ããŒãã¡ã³ãã®æé©åã®è²¬ä»»ãè² ãããããšã¯ãæ£æçã§å±éºãªããšã§ãã TypeScriptãJavaScriptãããŸã ãã£ããã£ããŠããªããã¿ãŒã³ã¯ãããããããŸãã 1ã€ã®äŸã¯ã this
ãã¿ã€ãïŒ229ãæã€å¯èœæ§ãããããšã«å¯ŸåŠããªãæ¹æ³ã§ãã
ã€ã³ããŒãã¯ãçŸåšã®ã³ãŒããããŒããããåã«äŸåé¢ä¿ãããŒãããããã«äœ¿çšãããçŽæ¥åç
§ããããšã¯ã§ããŸããã è§åºŠã®äŸåé¢ä¿ã¯1ã€ã®äŸã§ãããjQueryãã©ã°ã€ã³ã¯å¥ã®äŸã§ãã ããŒã¹ãªããžã§ã¯ããæ¡åŒµããçŽæ¥åç
§ãããªãã©ã€ãã©ãªã¯ããæ©èœãã®åœ±é¿ãåããŸãã ããŒã«ã«éçåæã«åºã¥ããŠã€ã³ããŒããä»»æã«å«ããªãããšã決å®ããããšã«ãããã€ã³ããŒãã¹ããŒãã¡ã³ããäœæããéçºè
ã®æ瀺çãªæå³ã«Cã¹ã¿ã€ã«ã®ã³ã³ãã€ã©ãã¿ãŒã³ã課ãããšã«ãªããŸãã importã®èšè¿°ã«ã¯ãäŸåé¢ä¿ãšããŠå«ãŸããã¢ãžã¥ãŒã«ã®ããŒã«ã«ã¹ã³ãŒãã§äœ¿çšã§ããããšãæåŸ
ãããŸãã ãã®ä»ã®ã¢ã¯ã·ã§ã³ã¯ãã¢ãžã¥ãŒã«å
ã«import
ãæžã蟌ãããšãéžæãããšããèªç¶ãªæåŸ
ã«å¯Ÿããå¯äœçšã§ãã
ãã®å ŽåãTypeScriptã³ã³ãã€ã©ãŒã¯ããå°ãªãããšãè¡ããããå€ãã®ããšãéæã§ããå¯èœæ§ãéåžžã«é«ãã§ãã
TypeScriptã®æ¬¡ã®ãªãªãŒã¹ã§ã¯ãES6ã¹ã¿ã€ã«ã®ã¢ãžã¥ãŒã«ããµããŒããããŸãïŒå€æŽã¯çŸåšãã¹ã¿ãŒã«ãããŸãïŒã ãããã£ãŠãäŸåé¢ä¿ã宣èšããã ãã§ããå Žåã¯ã次ã䜿çšã§ããŸãã
import "myLib";
ã³ã³ãã€ã©ã¯ãã®ã€ã³ããŒããåé€ããŸããã
æ¢åã®äžè²«æ§ã®ãªãè¡åã«å¯ŸåŠããã®ã§ããããããããšã人ã
ãçºèŠããã®ã楜ãããã®ãšããŠæ®ãã®ã§ããããïŒ import
ããã¡ã€ã«ãäŸåé¢ä¿ãšããŠè¿œå ããªãå Žåã§ããããšãããã¥ã¡ã³ãã«è¿œå ããå¿
èŠããããŸããïŒ TypeScript AMDã¢ãžã¥ãŒã«ããã«ããããšãã ///<reference...
ã¯ãšã©ãŒãšèŠãªãããŸããïŒ
import
çŸåšæ©èœããæ¹æ³ã¯ãæªãèšèšã§ãã æªããã¶ã€ã³ã¯ææ§ããçã¿åºããŸãã è¿œå ã®åäœãæ確ã«å®çŸ©ãããŠããªãå Žåãããã¯å¯äœçšã§ãããçºèŠãããå¯èœæ§ãé«ããªããŸãã ãããã£ãŠããã®ãã©ãŒã©ã ã§ã¯ãOPãç§ãããã³ããã«é¢é£ãããã®ä»ã®ã³ã¡ã³ããšãã°ããããŸãã
CommonãŸãã¯Requireã¹ã¿ã€ã«ã®äŸåé¢ä¿ç®¡çã䜿çšããå Žåã«ãã§ã«ååšããæ¢åã®äžé£ã®ãã©ã¯ãã£ã¹ããããŸãã import
ã®å®è£
ã¯ããããç¡èŠãããããšã瀺ããŠããŸãã
ããã¥ã¡ã³ãã«ã€ããŠã¯ãä»æ§ã®ã»ã¯ã·ã§ã³11.2.5ããã³ã»ã¯ã·ã§ã³11.2.6ãåç §ããŠãã ããã
å€éšã€ã³ããŒã宣èšã¯ãçæãããJavaScriptã§ãã¢ãžã¥ãŒã«ã·ã¹ãã ãã¹ãã«ãã£ãŠæäŸããããrequireãé¢æ°ã®åŒã³åºãã«ãã£ãŠåæåãããå€æ°ãšããŠè¡šãããŸãã ã€ã³ããŒããããã¢ãžã¥ãŒã«ããŸãã¯ã€ã³ããŒããããã¢ãžã¥ãŒã«ãåç §ããããŒã«ã«ãšã€ãªã¢ã¹ïŒã»ã¯ã·ã§ã³10.3ïŒããã€ã³ããŒããããã¢ãžã¥ãŒã«ã®æ¬äœã®ã©ããã§PrimaryExpressionãšããŠåç §ãããŠããå Žåã«ã®ã¿ãç¹å®ã®ã€ã³ããŒããããã¢ãžã¥ãŒã«ã«å¯ŸããŠå€æ°å®£èšãšãrequireãåŒã³åºããçºè¡ãããŸãã ã€ã³ããŒããããã¢ãžã¥ãŒã«ãModuleNameãŸãã¯TypeQueryExpressionãšããŠã®ã¿åç §ãããŠããå ŽåãäœãåºåãããŸãã_ã
///åç §ã¯ã€ã³ããŒããšåãã§ã¯ãããŸããã ///åç §ã¯ãdomAPIãªã©ã®è¿œå ã®å®£èšãã°ããŒãã«ã¹ã³ãŒãã«ãããããŸãã ããã¯ããããã®ãšã³ãã£ãã£ã®ååšãä¿¡é Œããããã®ã³ã³ãã€ã©ãžã®ã¹ããŒãã¡ã³ãã§ãããçæãããã³ãŒãã«ã¯åœ±é¿ããŸããã
äžæ¹ãã€ã³ããŒãã¯ãrequireã¹ããŒãã¡ã³ããšããŠçºè¡ããå¿
èŠããããŸãã åã®äœçœ®ã§ã€ã³ããŒãã®ã¿ã䜿çšããŠããå Žåãæå³ã¯æ確ã§ã¯ãããŸãããåïŒå®è¡æã«ååšããªãèšèšæã®æ§æèŠçŽ ïŒã®ã¿ãå¿
èŠã§ããããã®å Žåã¯ã€ã³ããŒããçç¥ããŸãã ãããã§ãªãå Žåã¯ãååšããªãã¿ã€ãã®ã¿ã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããå¯èœæ§ããããŸãã ãŸãã¯ãå¯äœçšãå¿
èŠã§ãã åŸè
ã®å Žåã import "mod";
æ§æã¯ãæå³ã宣èšããããã®ããæ確ãªæ§æã®ããã§ãã
@mhegazyæ°ããå·ãéããããªãã®ã§ãããããã¯Reactã®äžçã§ã¯å°ãåé¡ã§ãã
以äžã®ã³ãŒããæ€èšããŠãã ãããjsã«ã³ã³ãã€ã«ãããšã React
åç
§ã¯ã³ãŒãã«è¡šç€ºãããªãããåé€ããã ReactRouter
ã¯ããã«äŸåãããããã³ãŒãã¯å€±æããŸãã ä¿®æ£...æ¬åœã«ã°ãããŠããã®ã¯ã³ãŒãã®äžã§ãã ãããåãé€ãããè³¢ãæ¹æ³ã¯ãããŸããïŒ ããããšãã
import * as React from "react"; var temp = React.DOM;
....
// mf("route.schedules", "") // this is to register a translation
anonymousRoutes.route("/schedules", {
name: "schedules",
subscriptions: function() {
this.register("schedules", subscriptions.subscribe("schedules"));
},
action: () => {
ReactLayout.render(ClearLayout, {content: <Book />});
}
});
ä¿®æ£;ïŒ-EHM
import * as React from "react"; var temp = React.DOM;
...
ReactRouterãã³ãŒãã«äŸåããŠãããããã³ãŒãã¯å€±æããŸãã
var "React"ãå¿ èŠã§ããããããšãã€ã³ããŒãã«ããå¯äœçšãå¿ èŠã§ããïŒ
ã€ã³ããŒãã«ããå¯äœçšãå¿ èŠã§ãã varã¯ããã©ã³ã¹ãã€ã«ãããã³ãŒãã®ã€ã³ããŒããåé€ããªãããã«ããããã«è¿œå ãããŸããã
ã ãããªãåã«è¿œå ããªãã®ã§ãã
import * as React from "react"; // get the types
import "react"; // just for side effect
åºåã§ã¯ãæåŸã®ã€ã³ããŒãïŒ import "react"
ã¯çç¥ãããŸããã
æ®å¿µãªããããã®ããŠã¯æ©èœãããç§ã¯ãŸã åŸãŸãïŒ
ReferenceError: React is not defined
at action [as _action] (schedule_router.jsx:15)
at Route.callAction (kadira_flow-router.js?f961d732ed2b89a53d490af5979b899800aa1a5d:2306)
at kadira_flow-router.js?f961d732ed2b89a53d490af5979b899800aa1a5d:2025
at Object.Tracker.nonreactive (tracker.js:560)
at kadira_flow-router.js?f961d732ed2b89a53d490af5979b899800aa1a5d:2016
at Tracker.Computation._compute (tracker.js:294)
at Tracker.Computation._recompute (tracker.js:313)
at Object.Tracker._runFlush (tracker.js:452)
at Object.Tracker.flush (tracker.js:412)
at Router._invalidateTracker (kadira_flow-router.js?f961d732ed2b89a53d490af5979b899800aa1a5d:2065)
ããã§ã®çç±ã¯ãMeteorã®ã匱ãäŸåé¢ä¿ãã§ãããå¿ èŠãªãã¹ãŠã®åç §ãæäŸããããã«_callee_ã«äŸåããŠãããšæããŸãã
ç§ã¯æè¿Angular2ã®typescriptãåŠã³å§ããŸãããããã¯ãä»ã®æ°èŠåå ¥è ã«ãåœãŠã¯ãŸããšç¢ºä¿¡ããŠããã®ã§ãäœåºŠãç§ãæãããŸããã ããã¯æé©åã§ããããšãç解ããŠããŸãããå®éã«ã¯éåžžã«æ··ä¹±ããŠããŸãã tsãã¡ã€ã«ã«äœããå ¥åãããšãåã«ç¡èŠããã®ã§ã¯ãªããçæãåºåããŸãã¯äœããã®çš®é¡ã®ãã¡ã€ã«ãçæããããšäºæ³ãããŸãã requireã¹ããŒãã¡ã³ãã匷å¶çã«äœæã§ããããã«ãªããŸããããããã¯å°ãããããŒãªããã§ãã ããã¯ããŠãŒã¶ãŒãšããŠã®ç§ããã³ã³ãã€ã©ãŒãäœãæåãã決å®ããããšãªããèªåã§æ±ºå®ã§ããã¯ãã®åå ã®ããã«æãããŸãã
TypeScriptã¯å€ã®äžã«å宣èšããªãŒããŒã¬ã€ãããããåãã€ã³ããŒãæ§æã§åãå€ããŸãã¯ãã®äž¡æ¹ãååŸã§ããŸãã ããã«ãããã¢ãžã¥ãŒã«ã®æäœãéåžžã«äŸ¿å©ã§çŽæçã«ãªããŸãã å¥ã®ã¢ãžã¥ãŒã«ããåãå¿ èŠãªå Žåã¯ãå€æ°ãã€ã³ããŒããããšãã«ãããã€ã³ããŒãããããã¯ã©ã¹ãã€ã³ããŒãããŠãåãšããŠãnewã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšããŠã䜿çšããŸãã
ããã®è£åŽã§ã¯ãã¢ãžã¥ãŒã«ã¯åãªãã¿ã€ãã³ã³ããã§ãããããååšããªãã¢ãžã¥ãŒã«ã«ã€ã³ããŒãããããšãã§ããŸãã ã³ã³ãã€ã©ããããã®ã¢ãžã¥ãŒã«ãžã®åç §ãçºè¡ããå Žåãå®è¡æã«å€±æããŸãã ç§ãã¡ãå®æœããŠãã解決çã¯ãã€ã³ããŒããã©ã®ããã«äœ¿çšãããããæ€åºããããšã§ãããã€ã³ããŒããžã®ãã¹ãŠã®åç §ãåãšããŠäœ¿çšããããããå®è¡æã«äžèŠã§ãããçç¥ãããŸãã
ã¢ãžã¥ãŒã«ã®å¯äœçšãå¿ èŠãªå Žåã¯ãæããã«ããã¯æ··ä¹±ãæãå¯èœæ§ããããŸãã ããããéã«ãååšããªãã¢ãžã¥ãŒã«ãžã®ã€ã³ããŒããçºè¡ãããå Žåãæ··ä¹±ãæããŸããåãæ§æã§åãšå€ããã³ãã«ãããšããå©äŸ¿æ§ã倱ãå¿ èŠããããŸãã
åé¿çïŒ
åŸæ¥ã®è§£æ±ºçã䜿çšããŠããå ŽåïŒ moduleResolution
ãnode
èšå®ãããŠããªãå ŽåïŒãèå¥åã«!
ãå«ãã€ã³ããŒãã¹ããŒãã¡ã³ããåé¿ãããããšã¯ãããŸããã ããã¯ã systemjs
åäœãããé©åã«ãµããŒãããããšããŠããããšãšé¢ä¿ããããšæããŸãããã€ã³ããŒãã匷å¶ããããã«äœ¿çšã§ããŸãã systemjsãrequirejsããŸãã¯ã¢ãžã¥ãŒã«èå¥åã®åãããã³ã°ãå¯èœã«ããããŒããŒã䜿çšããŠããå Žåã¯ã匷å¶ã€ã³ããŒãã!js
ãŸãã¯åæ§ã®ããŒã¯ã§çµäºããã¢ãžã¥ãŒã«ããŒããŒã§ãããããããšãã§ããŸãã TSã¯ã€ã³ããŒããéèªçã«åºåãïŒã¿ã€ããã§ãã¯ã解決ãè©Šã¿ãŸããïŒãããŒããŒã«ã€ã³ããŒããç解ããæ¹æ³ãæããããšãã§ããŸãã
ããŒã ã¯ãchecker.tsãªã©ããããã®ã¿ã€ãã®ã€ã³ããŒãçšã«ç¹å¥ãªã±ãŒã¹ã®ã³ãŒããäœæããå¿ èŠãããããã§ãã
// If we're compiling under --jsx react, the symbol 'React' should
// be marked as 'used' so we don't incorrectly elide its import. And if there
// is no 'React' symbol in scope, we should issue an error.
if (compilerOptions.jsx === JsxEmit.React) {
let reactSym = resolveName(node.tagName, "React", SymbolFlags.Value, Diagnostics.Cannot_find_name_0, "React");
if (reactSym) {
getSymbolLinks(reactSym).referenced = true;
}
}
@mhegazyãææããŠããããã«ãããã¯æé©åã ãã§ã¯ãªããã©ã³ã¿ã€ã ãšã©ãŒã®åå ãšãªãã©ã³ã¿ã€ã å®çŸ©ïŒã€ã³ã¿ãŒãã§ã€ã¹ãªã©ïŒã®ãªãã€ã³ããŒããå¿ èŠãšããªãããã«ããããã§ãã
ç§ã¯ã©ã¡ããããé »ç¹ã«èµ·ããã®ãçåã«æããŸãã ã€ã³ããŒãã* .d.tsã§ãããã©ãããç°¡åã«æ€åºã§ããããããããã¯ç°¡åã«åé€ãããŸãã
æ®ãã®å Žåãã€ã³ããŒããããã¢ãžã¥ãŒã«ã«ã©ã³ã¿ã€ã åºåããªãããããã®ã€ã³ããŒããåé€ããã ãã§ããããšãã³ã³ãã€ã©ãŒãæ€åºããã®ã¯éåžžã«ç°¡åãªããšã®ããã«æãããŸãã
DRYã®èŠ³ç¹ããããã®ææ¡ã¯ãããªãã®ãã©ã³ã¹ãã€ã©ãŒããã®éè€ããã³ãŒããç§ã®ããã«æžãããã®ãã©ã³ã¹ãã€ã©ãŒãããã°ããã®ã«ãšæããŸããã
import * as React from "react"; // get the types
import "react"; // just for side effect
ç§ã®èŠæ¹ã§ã¯ãå®è¡æã«ããŒãããå¿ èŠããããã©ããã¯ã_imported_ãã¡ã€ã«ã®éžæã§ããå¿ èŠããããŸãïŒå¯äœçšãããããšãããã£ãŠããããïŒã ä»ã®ãã¡ã€ã«/ã¢ãžã¥ãŒã«ã®å®è£ ã®è©³çŽ°ãç¥ãããšã¯ããžãã¹ã§ã¯ãªããããããã¯å®éã«ã¯_loading_ãã¡ã€ã«ïŒã€ãŸããimportã¹ããŒãã¡ã³ããå«ããã¡ã€ã«ïŒã«ãã£ãŠæ±ºå®ãããã¹ãã§ã¯ãããŸããã
å°ãªããšãããã¯ããã£ã¬ã¯ãã£ããšãµãŒãã¹ãå®çŸ©ãããã¡ã€ã«ãåç §ãããå Žåã«å®è¡æã«ããŒãããå¿ èŠãããããšããèªèãããŠãããããã³ã³ãã€ã©ãŒããããåé€ããŠã¯ãªããªããangularjsã®èŠ³ç¹ããã¯ããŸãæ©èœããŸãã ã¿ã€ãã¹ã¯ãªããã³ã³ãã€ã©ãžã®ãã¡ã€ã«å ã®ãåé€ããªããããã®ããçš®ã®ãã³ãã¯ããã®IMOãä¿®æ£ããŸãã ããããç§ã¯ããããããã§ããã€ãã®ãŠãŒã¹ã±ãŒã¹ãèŠèœãšããŠããŸãã
-JM
xmodule.tsïŒ
console.log('ive been imported');
export class X {
}
import {X} from "xmodule"; // get the types
import "xmodule"; // just for side effect
xmoduleã«ã¹ããŒãã¡ã³ãïŒäŸïŒconsole.logã¹ããŒãã¡ã³ãïŒãããå Žåãããã¯å®çŸ©äžãåãªã宣èšã®å±±ã§ã¯ãããŸããã xmoduleãåãªãäžé£ã®å宣èšä»¥äžã®ãã®ãšèŠãªãããããã«ããããã«ãxmoduleã䜿çšããã¹ããŒãã¡ã³ããäœæããããšã¯ã€ã³ããŒãã¢ãžã¥ãŒã«ã®è²¬ä»»ã§ã¯ãããŸããã
@weswigham
ã€ã³ããŒãã匷å¶ããããã«åŒ·æã䜿çšãããšãã£ããããŸããã ããã¯ç§ã®ã·ããªãªã«é©ããŠããŸãã ã©ãããã°äœ¿çšã§ããŸããïŒ æ¬¡ã®ãã¹ãŠãè©ŠããŸããïŒ
!import {Service} from './service';
import! {Service} from './service';
import {!Service} from './service';
import {Service!} from './service';
import {Service} from '!./service';
import {Service} from './service!';
import {Service} from !'./service';
import {Service} from './service'!;
æååå ã«ãããŸãããããã¹ãããã³ã°ãå°å ¥ããããšãã«ããã®åäœã¯æè¿åé€ããããšæããŸãã
ç§ã¯ããŒãã©ãããŒãã€ã³ããŒãããããã«reactã®ãããªã©ã€ãã©ãªã䜿çšããŠããŸã-hïŒç§ãééã£ãŠããªããã°reactã§ã¯reactïŒïŒã§ãïŒãããã§ç§ã¯æ¬¡ã®ããã«ã€ã³ããŒãããŸãïŒ
import { h, Component } from "preact";
ãããŠããã¡ãããå®è¡æã«hã¯ãããŸããã ãªãããã«ããã®ã§ããããïŒ ãŸããjsxpreserveãšäžç·ã«äœ¿çšãããšãTypeScriptã¯å®éã«ã¯hã«ã€ããŠã¯èªèããŸããããbabelã¯ãããèªèããŸãã
ãããã£ãŠãhã®ãããªåç §ã䜿çšããŠãæ®ã£ãŠãããã®ã ã€ã³ããŒãåŸãããã§ããïŒ
h
ïŒãŸãã¯ãã®ä»ã®ã«ã¹ã¿ã jsxãã¡ã¯ããªïŒã®å Žåã¯ã --jsxFactory
ã䜿çšããŠããããå®è¡æã«äœ¿çšããŠãããã¡ã¯ããªã§ããããšãã³ã³ãã€ã©ã«éç¥ããŸãã äŸïŒ --jsxFactory h
ã
çŸæç¹ã§ã¯typescript@next
ã¯å¿
èŠãããŸããããTypeScript2.1.2ã§å©çšã§ããã¯ãã§ãã
@mhegazy 2çš®é¡ã®JSXã³ã³ã·ã¥ãŒããŒïŒreactãšsnabbdomãªã©ïŒããããããžã§ã¯ãã®å Žåãããã¯åãå ¥ããããŸããã
ç§ã¯ãreactã䜿çšããŠWeb UIãã¬ã³ããªã³ã°ããã«ã¹ã¿ãã€ãºãããä»®æ³domã䜿çšããŠwebglãªããžã§ã¯ããã¬ã³ããªã³ã°ãããããžã§ã¯ãã«åãçµãã§ããŸãã ãŸããåããããžã§ã¯ãã«2çš®é¡ã®@jsx
ã¢ãããŒã·ã§ã³ãå¿
èŠãªãããåé¡ãçºçããŸãã
ä»ãç§ã¯èªåã®h
ãã°ããŒãã«å€æ°ãšããŠãšã¯ã¹ããŒãããããšãäœåãªããããŠããŸã...ããã¯éãã§ãã
ãããè¡ãã¯ã³ã©ã€ããŒã€ã³ããŒããå¿ èŠãšãã/æãã§ããéçºè ã®ãªã¹ãã«ç§ãå«ããŠãã ããã ãããå®çŸããããã®2è¡ã®ãœãŒã¹ã¯ãç¹ã«å€æ°ã®ã¢ãžã¥ãŒã«ãé£ç¶ããŠã€ã³ããŒãããå Žåã«ãæé€ããããšããŠãããã®ã§ãã ãããŸã§ã®ãšãããç§ã«ãšã£ãŠæãããèãããã®ã¯ãã€ã³ããŒãã匷å¶ããããã®ããŒã¯ãŒã/æ§æã ãšæããŸãã ã¿ããªããããšãïŒ
æãåèã«ãªãã³ã¡ã³ã
ã ãããªãåã«è¿œå ããªãã®ã§ãã
åºåã§ã¯ãæåŸã®ã€ã³ããŒãïŒ
import "react"
ã¯çç¥ãããŸããã