μ΄ μμ μ μν ν μλ리μ€κ° λ§μ΄ μμ΅λλ€.
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 _ λ° _ μ»΄νμΌ νμ νμΈμλ°μ μ μμ΅λλ€.
var
μ κ·Ό λ°©μμ λͺ¨λμμ μ νμ κ°μ Έ μ€μ§ μμ΅λλ€.
λν νμν κ²½μ° amd-dependency μμ±μ μ¬μ©ν μ μμ΅λλ€.
μ¬μ©νμ§ μλ 물건μ μμ νλ λͺ©μ μ 무μμ λκΉ?
μλ₯Ό λ€μ΄ κ°λ μ±μμ λ€λ₯Έ νμΌμ λͺ κ°μ§ μ§μλ¬Έμ΄ μμ΅λλ€. μ΄λ¬ν μ§μλ¬Έμ κ°μ ΈμμΌν©λλ€. κ·Έλ μ§ μμΌλ©΄ html λ§ν¬ μ
μ΄ μλνμ§ μμ΅λλ€. κ·Έλλ JavaScriptμμλ μ¬μ©νμ§ μμ΅λλ€.
μΌλ°μ μΌλ‘ κ°λμμ λλΆλΆμ λͺ¨λμ λΆλ¦¬λκ³ μλ‘ μ’
μμ±μ΄ μμ§λ§ μ 체 μ±μ΄ μλνλ €λ©΄ κ°μ ΈμμΌν©λλ€.
: +1 :
ν·κ°λ¦¬λ€μ.
TypeScript μ»΄νμΌλ¬κ° κ·Έκ²μ μ κ±°νλ μ΄μ λ 무μμ
λκΉ?
μΈλΆ λͺ¨λμ μΈμ€ν΄μ€νλμ§ μμ λͺ¨λμ΄ μλλλ€.
νμλ λΆμμ©μ΄ μμ΅λλ€.
import μ μ AMD λ° CommonJSμ μꡬ μ¬νκ³Ό νΈνλλ κ²μΌλ‘ 보μ
λλ€. νμ§λ§ κ·Έλ μ§ μμ΅λλ€.
μ΄ λ¬Έμ λ μ€μ λ‘ μ무κ²λ λ΄ λ³΄λ΄μ§ μκ³ λμ es5-shim
, es6-shim
λ±κ³Ό κ°μ μ μ κ°μ²΄μ λν shim κΈ°λ₯μ μ¬μ©νλ require ()-ing λͺ¨λλ μ±κ° μκ²ν©λλ€.
ν·κ°λ¦¬λ€μ.
TypeScript μ»΄νμΌλ¬κ° κ·Έκ²μ μ κ±°νλ μ΄μ λ 무μμ λκΉ?
λλ‘λ λͺ¨λμμ μ ν μ 보 λ§ κ°μ Έμ€κ³ μΆκΈ° λλ¬Έμ μ΅μ νμ λλ€.
import foo = require('foo');
function bar(paramOne: foo.ParamOne, paramTwo: foo.ParamTwo){}
λ¨μ§ μ΅μ νκ° μλλλ€. κ°μ Έμ¨ λͺ¨λμ μ νμλ§ μ¬μ©νλ κ²½μ° (μ¦, κ° μμΉμμ μ¬μ©λμ§ μμ), λͺ¨λμ΄ λ°νμμ μ‘΄μ¬νμ§ μλ μ£Όλ³ μ ν μ μ© λͺ¨λ μΌ μ μμΌλ―λ‘ μ΄μ λν νμ λ‘μ§μ λ΄λ³΄λΌ μ μμ΅λλ€. λͺ¨λ κ°μ Έ μ€κΈ°λ₯Ό λ΄ λ³΄λ΄λ©΄ μ‘΄μ¬νμ§ μλ λͺ¨λμλ‘λνλ €λ λ°νμ μ€λ₯κ° λ°μν©λλ€.
μ΄λ₯Ό μν΄ amd-dependency
νλκ·Έλ₯Ό μ¬μ©ν μ μμ΅λλ€.
/// <amd-dependency path="foo" />
import x = require('foo');
μ½κ°μ ν΄νΉμ²λΌ 보μ΄λ <amd-dependency>
λμ <reference name="...">
IMOλ₯Ό μ¬μ©νλ κ²μ΄ ν₯λ―Έ λ‘μ μ κ²μ
λλ€.
@danquirk TypeScript μμ§μ΄ import λ¬Έμ μ΅μ ννλ μ±
μμ 맑λ κ²μ μμμ μ΄κ³ μνν μΌμ
λλ€. TypeScriptκ° μμ§ JavaScriptμμ μΊ‘μ²νμ§ μλ ν¨ν΄μ΄ λ§μ΄ μμ΅λλ€. ν κ°μ§ μλ this
μ΄ # 229 μ νμ κ°μ§ μ μλ€λ κ²μ ν΄κ²°νμ§ μλ λ°©λ²μ
λλ€.
Importλ νμ¬ μ½λκ°λ‘λλκΈ° μ μ μ’
μμ±μλ‘λνλ λ° μ¬μ©λλ©° μ§μ μ°Έμ‘° ν μ μμ΅λλ€. κ°λ μ’
μμ±μ ν κ°μ§ μμ΄λ©° 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μΌλ‘ λ§ μ°Έμ‘°λλ κ²½μ° μ무κ²λ λ°©μΆλμ§ μμ΅λλ€ _.
/// μ°Έμ‘°λ κ°μ Έ μ€κΈ°μ λμΌνμ§ μμ΅λλ€. /// μ°Έμ‘°λ μ μ λ²μμ μΆκ° μ μΈμ κ°μ Έμ΅λλ€ (μ : dom API). μ΄λ¬ν μν°ν°μ μ‘΄μ¬λ₯Ό μ λ’°νλ κ²μ μ»΄νμΌλ¬μ λν μ§μ μ΄λ©° μμ± λ μ½λμ μν₯μμ£Όμ§ μμ΅λλ€.
λ°λ©΄μ importλ 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)
λλ μ¬κΈ°μ νμν λͺ¨λ μ°Έμ‘°λ₯Ό μ 곡νκΈ° μν΄ _callee_μ μμ‘΄νλ Meteorμ "μ½ν μ’ μμ±"μ΄λΌκ³ μκ°ν©λλ€.
μ λ μ΅κ·Ό Angular 2μ νμ΄ν μ€ν¬λ¦½νΈλ₯Ό λ°°μ°κΈ° μμνμ΅λλ€. μ΄κ²μ λ€λ₯Έ μλ‘μ΄ μ¬λλ€μκ²λ κ·Έλ κ² λ κ²μ΄λΌκ³ νμ νκΈ° λλ¬Έμ μ¬λ¬ λ² μ λ₯Ό μ¬λ‘ μ‘μμ΅λλ€. μ΄κ²μ΄ μ΅μ νλΌλ κ²μ μ΄ν΄νμ§λ§ μ€μ λ‘λ λ§€μ° νΌλ μ€λ½μ΅λλ€. λ΄ ts νμΌμ 무μΈκ°λ₯Ό μ λ ₯νλ©΄ λ¨μν 무μνμ§ μκ³ μμ±, μΆλ ₯ λλ μ΄λ€ μ’ λ₯μ κ²μ κΈ°λν©λλ€. require λ¬Έμ κ°μ λ‘ μμ± ν μ μμ§λ§ μ½κ° μλ§μΈ κ² κ°μ΅λλ€. μ΄κ²μ μ¬μ©μλ‘μ λ΄κ° μ»΄νμΌλ¬κ° μ΅μ μ κ²°μ νμ§ μκ³ λ΄ μμ μ κ²°μ μ λ΄λ¦΄ μ μμ΄μΌνλ μμΈ μΈ κ² κ°μ΅λλ€.
TypeScriptλ κ° μμ μ ν μ μΈμ μ€λ²λ μ΄νλ―λ‘ λμΌν κ°μ Έ μ€κΈ° κ΅¬λ¬Έμ΄ μ ν, κ° λλ λ λ€λ₯Ό κ°μ Έμ΅λλ€. μ΄κ²μ λͺ¨λ μμ μ λ§€μ° νΈλ¦¬νκ³ μ§κ΄μ μΌλ‘ λ§λλλ€. λ€λ₯Έ λͺ¨λμμ μ νμ΄ νμν κ²½μ° λ³μλ₯Ό κ°μ Έμ¬ λ κ°μ Έ μ€κ±°λ ν΄λμ€λ₯Ό κ°μ Έ μμ μ νκ³Ό μμ±μλ‘ λͺ¨λ μ¬μ©νμμμ€.
μ΄κ²μ λ°λλ‘, μ‘΄μ¬νμ§ μλ λͺ¨λμ λ¨μ§ νμ 컨ν μ΄λμ΄κΈ° λλ¬Έμ κ°μ Έ μ€κΈ°λ₯Ό ν μ μμ΅λλ€. μ»΄νμΌλ¬κ° μ΄λ¬ν λͺ¨λμ λν μ°Έμ‘°λ₯Ό λ΄ λ³΄λΈ κ²½μ° λ°νμμ μ€ν¨ν©λλ€. μ°λ¦¬κ° κ°μ§κ³ μλ ν΄κ²°μ± μ κ°μ Έ μ€κΈ°κ° μ¬μ© λ _how_λ₯Ό κ°μ§νκ³ _all_ μ°Έμ‘°κ° μ νμΌλ‘ μ¬μ© λ λ€μ λ°νμμ νμνμ§ μκ³ μ κ±°λλ κ²μ λλ€.
λΆλͺ ν λͺ¨λμ λΆμμ©μ΄ νμν κ²½μ° νΌλ μ€λ¬μΈ μ μμ΅λλ€. κ·Έλ¬λ λ€λ₯Έ λ°©λ²μ κΈ°μ‘΄ λͺ¨λμ΄ μλ λͺ¨λμ λν κ°μ Έ μ€κΈ°κ° μμ± λ κ²½μ°μλ νΌλ μ€λ½μ΅λλ€. λμΌν ꡬ문μμ μ νκ³Ό κ°μ ν¨κ» λ¬Άλ νΈμμ±μ μμ΄ λ²λ €μΌν©λλ€.
ν΄κ²° λ°©λ² :
κΈ°μ‘΄ ν΄μλ ( moduleResolution
κ° node
μ€μ λμ§ μμ)λ₯Ό μ¬μ©νλ κ²½μ° μλ³μμ !
κ° ν¬ν¨ λ import λ¬Έμ μ λλ‘ λΉ μ Έ λκ°μ§ μμ΅λλ€. λλ μ΄κ²μ΄ μ°λ¦¬κ° 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 κ΄μ μμ μ μλ ν κ²μ λλ€. μ¬κΈ°μ μ§μλ¬Έκ³Ό μλΉμ€λ₯Ό μ μνλ νμΌμ μ°Έμ‘°λλ κ²½μ° λ°νμμλ‘λλμ΄μΌνλ€λ κ²μ "μκ³ "μμΌλ―λ‘ μ»΄νμΌλ¬κ°μ΄λ₯Ό μ κ±°ν΄μλ μλ©λλ€. typescript μ»΄νμΌλ¬μ "μ κ±°νμ§ μμ"μ λν νμΌμ ννΈκ°μ΄ 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μ μ¬μ©νλ λͺ λ Ήλ¬Έμ λ§λλ κ²μ λ°μ λͺ¨λμ μ± μμ΄ μλλλ€.
λΏ‘ λΉ΅λ¨
κ°μ λ‘ κ°μ Έ μ€κΈ° μν΄ κ°νλ₯Ό μ¬μ©νλ€κ³ μΈκΈνμ΅λλ€. κ·Έκ²μ λ΄ μλ리μ€μ μ νΈλ©λλ€. κ·Έλλ μ΄λ»κ² μ¬μ©ν©λκΉ? λ€μμ λͺ¨λ μλνμ΅λλ€.
!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μ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
import { h, Component } from "preact";
λ¬Όλ‘ λ°νμμλ hκ° μμ΅λλ€. μ κ±°κΈ°μ μμμκΉμ? λν jsxμ ν¨κ» μ¬μ©νλ©΄ TypeScriptλ μ€μ λ‘ hμ κ΄ν κ²μ΄ μλμ§λ§ babelμ μκ³ μμ΅λλ€.
κ·Έλμ λ¨μ κ²μ hμ κ°μ μ°Έμ‘°λ₯Ό μ¬μ©ν©λλ€. μμ ν, λ€?
h
(λλ λ€λ₯Έ μ¬μ©μ μ§μ jsx ν©ν 리)μ κ²½μ° --jsxFactory
λ₯Ό μ¬μ©νμ¬ μ»΄νμΌλ¬μκ² μ΄κ²μ΄ λ°νμμ μ¬μ©μ€μΈ ν©ν 리μμ μ립λλ€. μ : --jsxFactory h
.
μ§κΈμ typescript@next
κ° νμνμ§ μμΌλ©° TypeScript 2.1.2μμ μ¬μ©ν μ μμ΅λλ€.
@mhegazy λ μ’ λ₯μ JSX μλΉμ (μ : react λ° snabbdom)κ°μλ νλ‘μ νΈμ κ²½μ° νμ©λμ§ μμ΅λλ€.
μΉ UIλ₯Ό λ λλ§νλ λ° λ°μμ μ¬μ©νκ³ webgl κ°μ²΄λ₯Ό λ λλ§νκΈ° μν΄ μ§μ ꡬν ν μ¬μ©μ μ§μ κ°μ λμ μ¬μ©νλ νλ‘μ νΈλ₯Ό μ§ν μ€μ
λλ€. κ·Έλ¦¬κ³ λμΌν νλ‘μ νΈμ λν΄ λ κ°μ§ λ€λ₯Έ μ’
λ₯μ @jsx
μ£Όμμ΄ νμνκΈ° λλ¬Έμ μ½λ μΌμ΄μ€μ λλ¬νμ΅λλ€.
μ΄μ λ μ°λ¦¬ μμ μ h
λ₯Ό μ μ λ³μλ‘ λ΄ λ³΄λ΄μΌν©λλ€.보기 νν©λλ€.
μ΄ μμ μ μννλ λ¨μΌ λΌμ΄λ μμ μ΄ νμνκ±°λ μνλ κ°λ°μ λͺ©λ‘μ μ λ₯Ό ν¬ν¨ μν€μμμ€. μ΄λ₯Ό λ¬μ±νκΈ°μν λ μ€μ μμ€λ νΉν μ¬λ¬ λͺ¨λμ μ°μμΌλ‘ κ°μ Έ μ€λ €λ κ²½μ° μ κ±°νλ €λ κ²μ λλ€. μ§κΈκΉμ§ κ°μ₯ μ λ€λ¦¬λ κ²μ κ°μ Έ μ€κΈ°λ₯Ό κ°μ νλ ν€μλ / ꡬ문μ΄λΌκ³ μκ°ν©λλ€. λ€μ νλ² κ°μ¬λ립λλ€!
κ°μ₯ μ μ©ν λκΈ
κ·Έλμ κ·Έλ₯ μΆκ°νμ§ μλ μ΄μ
μΆλ ₯μμ λ§μ§λ§ κ°μ Έ μ€κΈ° :
import "react"
λ μ κ±°λμ§ μμ΅λλ€.