ã°ããŒãã«ã¹ã³ãŒãïŒTypeScriptã®åå空éïŒã¯ãã¯ãã¯ãŒã«ã§ã¯ãããŸããã é·ãéã¢ãžã¥ãŒã«ïŒç¹ã«ES6ã¢ãžã¥ãŒã«ïŒã®å©ç¹ããªã¹ãããããšã¯å¯èœã§ãããç§ã«ãšã£ãŠæ±ºå®çãªããšã¯ãSystemJSã䜿çšããŠãœãŒã¹ã³ãŒããšããŒã«ã¢ãããåçã«ããŒããããã³ãã«ãæ§ç¯ã§ããããšã§ããã
ãã ããES6ã¢ãžã¥ãŒã«ãå®è£
ãããšãã«æåã«åºãŠããã®ã¯ãéåžžã«å€ãã®ã€ã³ããŒãåŒã§ãå
éšã«ã¯éåžžã«å€ãã®ãã€ã³ãããããŸãã
import { FieldGroup } from "../../../Common/Components/FieldGroup/FieldGroup";

觊æã¯ã©ãããæé·ããŸããïŒ
ES6ä»æ§ã§ã¯ããã«ã€ããŠã¯ããŸãèšåãããŠããããã¢ãžã¥ãŒã«ãžã®ãã¹ã¯ãããŒããŒåºæãã§ãããšãããã¬ãŒãºãæ¯ã£ãŠããŸãã ã€ãŸããSystemJSã䜿çšããå Žåããã¹ã®åœ¢åŒã«ãã£ãŠSystemJSã決ãŸããWebpackã®å Žåã¯Webpackã決ãŸããŸãã ããŒãããŒããŒä»æ§ã®äœæ¥ã¯é²è¡äžã§ãããwatwgãªããžããªã®ã¡ã€ã³ããŒãžã«æ¬¡ã®ããã«èšèŒãããŠããŸã ã
ãã®ä»æ§ã¯çŸåšãæœåšçã«å€§èŠæš¡ãªåèšèšãè¡ãããŠããïŒïŒ147ããã³ïŒ149ãåç
§ïŒãå®è£
ã®æºåãã§ããŠããŸããã
ãããŸã§ã®ããŒããŒéã®åæã¯ãã./ãã§å§ãŸããã¹ã¯ãçŸåšã®ã¢ãžã¥ãŒã«ã眮ãããŠãããã£ã¬ã¯ããªãšåããã£ã¬ã¯ããªãæ¢ãå¿
èŠããããšããããšã ãã§ãã ããããäºéãããã../ãã䜿çšãããšã1ã¬ãã«äžã«ç§»åããŠèŠªãã£ã¬ã¯ããªã確èªã§ããŸãã åæã«ãæãåçŽãªãããžã§ã¯ãã§ãã£ãŠããããããæå³ã§ã²ã©ã3ã4åã®ããã«ãã€ã³ãã../../../ããå«ããã¹ãååŸããã®ã¯éåžžã«ç°¡åã§ãã
ä»æ§ããªããããä»ã§ã¯èª°ã§ãã§ãã人ã®åé¡ã解決ããŠããŸãã éåžžããã®ç®çã®ããã«ãããã€ãã®ã«ãŒããã©ã«ããŒãèšå®ããããã¹ãŠã®ãã¹ã¯ããã«é¢é£ããŠããŸãã ããšãã°ãbabelã³ãã¥ããã£ã¯pluginãèæ¡ããŸããããwebpackã¯resolution.rootèšå®ããµããŒãããŠããŸãã
import { BasicEvent } from '~/Common/Utils/Events/BasicEvent'
ãã ããã«ãŒããã©ã«ããŒãæ§æããŠããåãã¡ã€ã«ã®å
é ã«ããimport-expressionsã®å·šå€§ãªããããŒããã¯ä¿åãããŸããã è¯ããããŒã¯ãã³ãŒããå¯èœãªéãå°ããªã¢ãžã¥ãŒã«ã«åå²ããããã«æ瀺ããŸããããã¯åé¡ã®åå ã§ãïŒãªã¿ã¯ã¯ã³ãŒããããããå解ããå¿
èŠããããšèšããŸãããçŸå®ã®äžçã¯åžžã«æãã§ãããã®ã§ã¯ãããŸããïŒã

ããã¯ç¹ã«æ²ããããšã§ããç¹å®ã®ã¢ãžã¥ãŒã«ãã€ã³ããŒããããã³ã«ããã¡ã€ã«ã·ã¹ãã å
ã®ãã®ã¢ãžã¥ãŒã«ã®å Žæãžã®åºå®ãã€ã³ãã£ã³ã°ãäœæããŸãã ãããã£ãŠã1ïŒå°ãªããšããåã¢ãžã¥ãŒã«ã®å Žæãæ£ç¢ºã«èŠããŠããå¿
èŠããããŸã2ïŒãªãã¡ã¯ã¿ãªã³ã°ïŒããšãã°ããã¡ã€ã«ã®ååãå€æŽããïŒãè¡ãå Žåã¯ãå€ãã®èŠçãåŸ
ã£ãŠããŸãã
ããŠãVisualStudioã§TypeScriptã䜿çšãããšãã«ééããæåŸã®åé¡ã¯ãã€ã³ããŒããããæåã®JSXãªã³ãã£ã³ã°ãšåæ§ã«ãæ§æã®åŒ·èª¿è¡šç€ºãããã§æ©èœããªãããšã§ãã äŸïŒ
import { FieldGroup } from "../../Components/FieldGroup/FieldGroup"; import { BasicEvent } from "../../Common/Utils/Events/BasicEvent' ... var event = new BasicEvent(); // BasicEvent VisualStudio ... render() { // JSX FieldGroup VisualStudio ( ), // intellicese , .. FieldGroup return <FieldGroup name="blabla" />; }
ãã€ã¯ããœããã§ã¯ãæããã«ã圌ãã¯åé¡ã解決ããããã«æ¥ãã§ããªãïŒ åé¡1 ã åé¡2 ïŒã
éæ³ã®ããã±ãŒãžã¯ã¿ããªãæã

åé¡ã®è§£æ±ºçã¯ãã©ã³ãã ã«çžäºæ¥ç¶ãããåã
ã®ã¢ãžã¥ãŒã«ã®ã¢ã€ãã¢ãæŸæ£ãããã¢ãžã¥ãŒã«ããã±ãŒãžãã®ãããªãã®ã䜿ãå§ããããšã§ãã ãã®ãããªè§£æ±ºçããã®ã³ã³ããã¹ãã®ã©ããã«æ¢ã«å
¬éãããŠãããã©ããã¯ããããŸãã ïŒUPDïŒ gogolorã¯Angularã«ãã¬ã«ãšåŒã°ããããã¯ãããããšãææ¡ããŸããïŒããã¢ã€ãã¢èªäœã¯æ°ãããã®ã§ã¯ãããŸããã ããšãã°ãCïŒã«ã¯ã³ãŒããå«ãåå¥ã®ãã¡ã€ã«ããããŸãããåæã«ãããã®ãã¡ã€ã«ã¯ãã¢ã»ã³ããªãïŒdllïŒã«åéãããŸããããã¯ãä»ã®ã¢ã»ã³ããªãžã®ãªã³ã¯ãæ¢ã«æ瀺çã«å®£èšããŸãã
次ã®ãããžã§ã¯ãæ§é ïŒç®¡çããã«ã®å®éã®ãããžã§ã¯ãã®ã¹ã¯ãªãŒã³ã·ã§ããïŒããããšæ³åããŠãã ããã

AssignmentTemplatSettings.tsxãã¡ã€ã«ããBasicEvent.tsã«å°éããã«ã¯ã次ã®ããã«èšè¿°ããå¿
èŠããããŸãã
import { BasicEvent } from '../../Common/Utils/Events/BasicEvent';
ããã¯ãäžã§èª¬æãããã¹ãŠã®çç±ã§ã²ã©ãã§ãã ãããããããžã§ã¯ãã®æ§é ãèŠããšããã¹ãŠã®ã¢ãžã¥ãŒã«ãèªç¶ã«ãã©ã«ããŒã«åæ£ãããŠããããšã«æ°ä»ãã®ã¯ç°¡åã§ãã ãããžã§ã¯ããè€éã«ãªãã»ã©ããã©ã«ãæ§é ã¯åå²ããŸãã ãã¹ãŠã®éçºè
ã®åœãåœããããšãã欲æ±ããããŠãããããããªãã®ãããžã§ã¯ãã§ãåæ§ã®ããšãèµ·ãããŸãã
è¯ããã¥ãŒã¹ã¯ãES6ã¢ãžã¥ãŒã«ã䜿çšãããšããã®ãã©ã«ããŒæ§é ãããã¹ã¯ãããã®äžçã®dllãéåžžã«é£æ³ããããããã±ãŒãžãæ§é ã«å€æã§ããããšã§ãã åãã©ã«ããŒãããã±ãŒãžã«ããããšãã§ãïŒããšãã°ãCommon / Utils / Eventsã¯ãã¹ããããããã±ãŒãžã«ãªããŸãïŒããã倧ããªåäœïŒCommon / Utilsã®ã¿ïŒã«å¶éã§ããŸãã ã¢ãžã¥ãŒã«ã®åããã±ãŒãžã«ã€ããŠããããäŸåããããã±ãŒãžãšãå
¬éããããã®ãæ確ã«ç€ºãããŸãã ãããã®äŸåé¢ä¿ã¯ãã¹ãŠ1ã€ã®æç¹ã§åéããããããããã±ãŒãžã¢ãžã¥ãŒã«ã¯ä»ã®ããã±ãŒãžã®ã¢ãžã¥ãŒã«ã®å Žæã«ã€ããŠäœãç¥ããŸããã ãã®å Žåãçžå¯Ÿãã¹ã®ãã€ã³ãïŒ "../../"ïŒã®æ°ã¯ã1ã€ã®ããã±ãŒãžå
ã®ãã©ã«ããŒã®ãã¹ãã«éãããã€ã³ããŒãåŒã®æ°ã¯1ã€ã«åæžãããŸãã
å®è£

ãã©ã«ããŒãããã±ãŒãžã«å€æããã«ã¯ã2ã€ã®ãã¡ã€ã«ãè¿œå ããã ãã§ã-ã€ã³ããŒããšãšã¯ã¹ããŒãã æåã®ãã¡ã€ã«ã§ã¯ããã®ããã±ãŒãžã®ã¢ãžã¥ãŒã«ã«å¿
èŠãªãã®ããã¹ãŠã€ã³ããŒãããã³åãšã¯ã¹ããŒãããŸãã 2çªç®ã®ãã¡ã€ã«ã«ã¯ãããã±ãŒãžãä»ã®ããã±ãŒãžãžã®ã€ã³ããŒãã«äœ¿çšå¯èœã«ãããã¹ãŠã®ãšã¯ã¹ããŒããå«ãŸããŠããŸãã
茞åºè²©å£²
Eventsãã©ã«ããŒããããã±ãŒãžãäœæããŠã¿ãŸãããã BasicEventãšSimpleEventã®2ã€ã®ã¯ã©ã¹ãå
¬éããŸãã 次ã«ã@ EventsExports.tsãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
export * from "./BasicEvent"; export * from "./SimpleEvent";

ãã¡ã€ã«åã«ã@ããå«ãŸããŠãããšãä»ã®ããã±ãŒãžãã¡ã€ã«éã§å€±ããããåžžã«æäžäœã«ãªããŸãã ããã§ã¯ä»ã®ããã±ãŒãžã®äœãå¿
èŠãªãã®ã§ãããã§ã¯ã€ã³ããŒããã¡ã€ã«ããŸã å®è¡ããŠããŸããã 次ã«ã芪ãã©ã«ããŒUtilsããã³Commonãããã±ãŒãžã«å€æããŸãã ããšãã°ã@ UtilsExports.tsã«ã¯æ¬¡ãå«ãŸããŸãã
import * as Events from "./Events/@EventsExports"; import * as ModalWindow from "./ModalWindow/@ModalWindowExports"; import * as Other from "./Other/@OtherExports"; import * as RequestManager from "./RequestManager/@RequestManagerExports"; import * as ServiceUtils from "./ServiceUtils/@ServiceUtilsExports"; export { Events, ModalWindow, RequestManager, ServiceUtils };

Utilsãã©ã«ããŒã«çŽæ¥ãã£ãCachingLoaderã¢ãžã¥ãŒã«ããã³ãã®ä»ã®ã¢ãžã¥ãŒã«ã¯ãããã«ã¯ãªã¹ããããŠããŸããã ããã¯ãã®ã¢ãããŒãã®å¶éã§ãããä»ã®ããã±ãŒãžããšã¯ã¹ããŒãããããã±ãŒãžã«ã¢ãžã¥ãŒã«ãå«ããããšã¯ã§ããŸããã ãããã£ãŠããããã®ãã¡ã€ã«ããã¹ãŠä»ã®åããã±ãŒãžã«ç§»åããå¿
èŠããããŸããã ã€ã³ããŒããã¡ã€ã«ã®å
容ã¯ãåŸã§ç¢ºèªãããŸãã
åæ§ã«@ CommonExports.tsãå®è¡ããŸãã
import * as Components from "./Components/@ComponentsExports"; import * as Extensibility from "./Extensibility/@ExtensibilityExports"; import * as Models from "./Models/@ModelsExports"; import * as Services from "./Services/@ServicesExports"; import * as Utils from "./Utils/@UtilsExports"; export { Components, Extensibility, Models, Services, Utils };

ã€ã³ããŒããå®çŸ
ããã§ã¯ãã¿ãããã±ãŒãžã«ç§»ããŸãããã æããã«ãCommonããã±ãŒãžã®å€ãã®ã¯ã©ã¹ãå¿
èŠã«ãªããŸãã ãããã£ãŠããã®@ TabsImports.tsãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
import * as Common from "../Common/@CommonExports"; export { Common };

ãã®ããã±ãŒãžã®AssignmentTemplatesSettings.tsxã¢ãžã¥ãŒã«ã§ã次ã®ããã«èšè¿°ããŸãã
import { Common } from "../@TabsImports"; // - using var Events = Common.Utils.Events; // BasicEvent Common/Utils/Events/BasicEvent.ts var basicEvent = new Events.BasicEvent();

ã芧ã®ãšãããBasicEventãã¡ã€ã«ãžã®ãã«ãã¹ãæå®ãã代ããã«ãã©ã®ããã±ãŒãžã«ãããã瀺ããŸãã ç¹ã«çŽ æŽãããã®ã¯ãEvents.BasicEventãæžããšããVisualStudioã§ã®æ§æã®åŒ·èª¿è¡šç€ºãšJSXãªã³ãã£ã³ã°ãçŽ æŽãããããšã§ãïŒ
ã¿ãããã±ãŒãžãã€ãã³ãããã±ãŒãžã®ã¿ãå¿
èŠãšããå Žåã次ã®ããã«TabsImports.tsãæžãæããããšãã§ããŸãã
import * as Common from "../Common/@CommonExports"; var Events = Common.Utils.Events; export { Events };
ãŸãã¯ïŒ
import * as Events from "../Common/Utils/@EventsExports"; export { Events };
åŸè
ã®å Žåãåã³ãã¹ã«ã¢ã¿ãããããŸããããã®ãã€ã³ãã£ã³ã°ã¯ããã±ãŒãžã¬ãã«ã«ããããããªãã¡ã¯ã¿ãªã³ã°ãããšãã®çã¿ã¯åã¢ãžã¥ãŒã«ã«ãããšããããã¯ããã«å°ãªããªããŸãã ã€ã³ããŒããããã³ãŒãã®éãæžããããããã¢ãžã¥ãŒã«ã®ã³ãŒããå®è¡ããåã«ããŒããŒãæºåããå¿
èŠã®ãããã¡ã€ã«ã®æ°ãå¶éããŸããïŒããšãã°ãããã¯ãã³ãã«ãé
延ããŒããããè€æ°ã®éšåã«åå²ããå Žåã«é¢ä¿ããŸãïŒã
ããã±ãŒãžå
ã®ã¢ãžã¥ãŒã«ã®çžäºæ¥ç¶
ããã±ãŒãžå
ã®ã¢ãžã¥ãŒã«éã®éä¿¡ã¯ããã»ã©ã²ã©ãåé¡ã§ã¯ãããŸããã ãããã¯ãã¹ãŠè¿ãã«ãããŸãã ãã ããããã€ãã®çç±ã«ãããåãã¡ã«ããºã ã䜿çšããŠçŸåšã®ããã±ãŒãžã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããå¿
èŠãããå ŽåããããŸãã ãšã¯ã¹ããŒããã¡ã€ã«ã®äœ¿çšã¯æ©èœããŸããã å®çŸ©äžãããã±ãŒãžã®ãã¹ãŠã®å
容ãå«ããã¹ãã§ã¯ãããŸããã ãã ããããã䜿çšããŠ3çªç®ã®å
éšãŠãŒãã£ãªãã£ãã¡ã€ã«ãäœæã§ããŸãã
export * from "./@EventsExports"; // - export * from "./SomeInternalEventImpl"; // export * from "./SomeAnotherInternalEventImpl
ãããã£ãŠããã®åŸãããã±ãŒãžå
ã®ã©ãã§ããã®ãã¡ã€ã«ã䜿çšã§ããŸãã
import * as Events from "./@EventsInternals"; let eventImpl = new Events.SomeInternalEventImpl();
ä»æ§ã§ã¯åŸªç°äŸåé¢ä¿ãèš±å¯ãããŠãããããå
éšã®ã€ã³ããŒãã«åé¡ã¯ãããŸããã å°ãªããšãSystemJSã¯ãã®ãããªç¶æ³ãæ£ããåŠçããŸãã
çµæ
- ã€ã³ããŒããã¹å
ã®æããããã€ã³ã "../../../"ãåãé€ããŸãããã絶察ãã¹ã«é Œãããçžå¯Ÿçãªæè»æ§ãç¶æããŸããã
- 䜿çšããåã¢ãžã¥ãŒã«ãåå¥ã«ã€ã³ããŒãããåãã¡ã€ã«ã«å·šå€§ãªã€ã³ããŒãããããŒãäœæããå¿
èŠæ§ãåãé€ããŸããã 代ããã«ãããã±ãŒãžã®ã€ã³ããŒããã¡ã€ã«ããå¿
èŠãªããã±ãŒãžã1åã€ã³ããŒãããŸãã
- VisualStudioã§æ§æã®åŒ·èª¿è¡šç€ºãšJSXãªã³ãã£ã³ã°ãè¿ããŸããã
- ã€ã³ããŒãæã«ã¯ãã¡ã€ã«åã§ã¯ãªãå€æ°ïŒããã±ãŒãžïŒã䜿çšãããããTypeScriptç°å¢ã§ã®ãªãã¡ã¯ã¿ãªã³ã°ã¯åºæ¬ã«ãªããŸãã ããã±ãŒãžã®ååã¯èªåçã«å€æŽãããfind-all-referencesãªã©ãæ©èœããŸãã
- ã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã¯é åºä»ããããŠãããç¹å¥ãªãã¡ã€ã«ã«éäžããŠããŸãããç¹å¥ãªãã¡ã€ã«ã¯ããã»ã©å€ããããŸããã TypeScriptããªããŠãããã®ãããªã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ã¯ã¯ããã«ç°¡åã§ãã
- å¿
èŠã«å¿ããŠãããã±ãŒãžã¯å€å°åé¢ãããŠããããã®äŸåé¢ä¿ããã¹ãŠæ確ã«ç»é²ãããŠãããããä»»æã®ããã±ãŒãžãåå¥ã®ãããžã§ã¯ãã«ç°¡åã«åé¢ã§ããŸãã ããã±ãŒãžãžã®åå²ã«ãããéçºè
ã¯ã¢ããªã±ãŒã·ã§ã³ãããé©åã«æ§æããå¿
èŠããããŸãã
- é »ç¹ã«äœ¿çšãããããã±ãŒãžã®å ŽåãããŒãããŒããŒã§ãšã€ãªã¢ã¹ãèšå®ãããã¹ãæå®ããã«ååã§åçŽã«ã€ã³ããŒãã§ããŸãã
æ¬ ç¹ã®-åžžã«æŽæ°ããå¿
èŠãããè¿œå ã®ã€ã³ããŒã/ãšã¯ã¹ããŒããã¡ã€ã«ããããŸãã ååãšããŠããã®ãããªãã¡ã€ã«ã®ã³ã³ãã€ã«ã¯ããã»ã©è€éã§ã¯ãªãgulpã¿ã¹ã¯ã§èªååã§ããŸã;äž»ãªããšã¯ãããã±ãŒãžã®ãšã¯ã¹ããŒããããã¢ãžã¥ãŒã«ãšå
éšã¢ãžã¥ãŒã«ãåºå¥ããæ¹æ³ã«é¢ããèŠåãèãåºãããšã§ãã ãŸãããŸãæ¬ ç¹ãšããŠ-ã€ã³ããŒããããæåã«ã¢ã¯ã»ã¹ãããšãã¯ãããã±ãŒãžåïŒBasicEvnetã®ä»£ããã«Events.BasicEventïŒãè¿œå ããå¿
èŠããããŸãã ããããèŠè¿ãã«åŸããããã®ãèãããšãããã¯å解ã§ãããšæããŸãã
UPDïŒ justborisã¯ããšã¯ã¹ããŒããã¡ã€ã«ãindex.tsãšç°¡åã«åŒã¶ããšãã§ããããšã«æ°ä»ããŸããã å€ãã®ãã«ããŒãšIDEã¯ãããããã£ã¬ã¯ããªå
ã®ããã©ã«ããã¡ã€ã«ãšèŠãªããŸãã
UPDïŒ dzigoroã¯ãWebStormãã€ã³ããŒã宣èšã®èªåè¿œå ãšãªãã¡ã¯ã¿ãªã³ã°äžã®æŽæ°ããµããŒãããŠããããšãææããŸããã