νΈλ¦¬ν-μ¬λμ(Triple-slash) μ§μμ΄λ λ¨μΌ XML νκ·Έλ₯Ό ν¬ν¨νλ ν μ€ μ£Όμμ λλ€. μ£Όμμ λ΄μ©μ μ»΄νμΌλ¬ μ§μμ΄λ‘ μ¬μ©λ©λλ€.
νΈλ¦¬ν-μ¬λμ μ§μμ΄λ μ€μ§ ν¬ν¨λ νμΌμ μλ¨μμλ§ μ ν¨ν©λλ€. νΈλ¦¬ν-μ¬λμ μ§μμ΄λ λ€λ₯Έ νΈλ¦¬ν-μ¬λμ μ§μμ΄λ₯Ό ν¬ν¨ν ν μ€ νΉμ μ¬λ¬ μ€μ μ£Όμ μμλ§ μμΉν μ μμ΅λλ€. λ§μ½ λ¬Έ νΉμ μ μΈ λ€μ λμ€λ κ²½μ°, 보ν΅μ ν μ€ μ£ΌμμΌλ‘ μ¬κ²¨μ§λ©° μ΄λ€ νΉλ³ν μλ―Έλ κ°μ§ μμ΅λλ€.
/// <reference path="..." /> μ§μμ΄λ κ°μ₯ μΌλ°μ μΈ μ§μμ΄μ
λλ€.
νμΌ κ° μμ‘΄μ± μ μΈμΌλ‘ μ¬μ©λ©λλ€.
νΈλ¦¬ν-μ¬λμ μ°Έμ‘°λ μ»΄νμΌ νλ‘μΈμ€μ μΆκ°μ μΈ νμΌμ ν¬ν¨νλλ‘ μ»΄νμΌλ¬μκ² μ§μν©λλ€.
λν --out λλ --outFileμ μ¬μ©ν λ μΆλ ₯λ¬Όμ μ λ ¬νκΈ° μν λ°©λ²μΌλ‘λ μ¬μ©λ©λλ€.
νμΌμ μ μ²λ¦¬ ν΅κ³Ό ν μ
λ ₯κ³Ό λμΌν μμλ‘ μΆλ ₯ νμΌ μμΉμ μμ±λ©λλ€.
μ»΄νμΌλ¬λ λͺ¨λ νΈλ¦¬ν-μ¬λμ μ°Έμ‘° μ§μμ΄λ₯Ό λΆμνκΈ° μν΄ μ λ ₯ νμΌμ λν μ μ²λ¦¬λ₯Ό μνν©λλ€. μ΄ κ³Όμ μμ, μΆκ° νμΌμ΄ μ»΄νμΌμ μΆκ°λ©λλ€.
μ΄ κ³Όμ μ root files μ§ν©μμ μμν©λλ€;
μ΄κ²λ€μ 컀맨λ-λΌμΈμ΄λ tsconfig.json νμΌμ "files"λͺ©λ‘μ μ§μ λ νμΌ μ΄λ¦μ
λλ€.
μ΄ λ£¨νΈ νμΌλ€μ μ§μ λ μμλλ‘ μ μ²λ¦¬ λ©λλ€.
νμΌμ΄ λͺ©λ‘μ μΆκ°λκΈ° μ , νμΌμ μλ λͺ¨λ νΈλ¦¬ν-μ¬λμ μ°Έμ‘°κ° μ²λ¦¬λκ³ κ·Έ λμλ€μ΄ ν¬ν¨λ©λλ€.
νΈλ¦¬ν-μ¬λμ μ°Έμ‘°λ νμΌμμ 보μ΄λ μμλλ‘ κΉμ΄ μ°μ μΌλ‘ μ²λ¦¬λ©λλ€.
루νΈκ° μλ κ²½μ° νΈλ¦¬ν-μ¬λμ μ°Έμ‘° κ²½λ‘λ μ΄λ₯Ό ν¬ν¨νκ³ μλ νμΌμ κΈ°μ€μΌλ‘ μ²λ¦¬λ©λλ€.
μ‘΄μ¬νμ§ μλ νμΌμ μ°Έμ‘°νλ κ²μ μ€λ₯μ λλ€. νμΌμ΄ μκΈ° μμ μ λν νΈλ¦¬ν-μ¬λμ μ°Έμ‘°λ₯Ό κ°λ κ²μ μ€λ₯μ λλ€.
μ»΄νμΌλ¬ νλκ·Έ --noResolveκ° μ§μ λλ©΄ νΈλ¦¬ν-μ¬λμ μ°Έμ‘°λ 무μλ©λλ€; μ νμΌμ μΆκ°νκ±°λ μ 곡λ νμΌμ μμλ₯Ό λ³κ²½νμ§ μμ΅λλ€.
μμ‘΄μ±μ μ μΈ μν μ νλ /// <reference path="..." /> μ§μμ΄μ μ μ¬νκ², /// <reference types="..." /> μ§μμ΄λ ν¨ν€μ§μ μμ‘΄μ±μ μ μΈν©λλ€.
ν¨ν€μ§ μ΄λ¦μ μ²λ¦¬νλ κ³Όμ μ import λ¬Έμμ λͺ¨λ μ΄λ¦μ μ²λ¦¬νλ κ³Όμ κ³Ό μ μ¬ν©λλ€.
νΈλ¦¬ν-μ¬λμ-μ°Έμ‘°-νμ
μ§μμ΄λ₯Ό μ μΈ ν¨ν€μ§μ importλ‘ μκ°νλ©΄ μ΄ν΄νκΈ° μ½μ΅λλ€.
μλ₯Ό λ€μ΄, μ μΈ νμΌμ /// <reference types="node" />λ₯Ό ν¬ν¨νλ κ²μ μ΄ νμΌμ΄ @types/node/index.d.tsμ μ μΈλ μ΄λ¦μ μ¬μ©νλ€κ³ μ μΈνλ©°;
λ°λΌμ μ΄ ν¨ν€μ§λ μ μΈ νμΌκ³Ό ν¨κ» μ»΄νμΌμ ν¬ν¨λμ΄μΌ ν©λλ€.
μ΄ μ§μμ΄λ d.ts νμΌμ μ§μ μμ±ν λλ§ μ¬μ©νμΈμ.
μ»΄νμΌ μ€ μμ±λ μ μΈ νμΌμ κ²½μ°, μ»΄νμΌλ¬λ μλμΌλ‘ /// <reference types="..." />λ₯Ό μΆκ°ν©λλ€;
μ€μ§ κ²°κ³Ό νμΌμ΄ μ°Έμ‘°λ ν¨ν€μ§μ μ μΈλ¬Έμ μ¬μ©νλ κ²½μ°μλ§ μμ±λ μ μΈ νμΌ μμ /// <reference types="..." /> κ° μΆκ°λ©λλ€.
.ts νμΌμμ @typeμ ν¨ν€μ§μ μμ‘΄μ±μ μ μΈνλ €λ©΄, 컀맨λ λΌμΈμ --types μ μ¬μ©νκ±°λ tsconfig.jsonμ μ¬μ©νμΈμ.
tsconfig.jsonμμ @types, typeRoots κ³Ό types μ¬μ©νκΈ°μμ μΈλΆ μ¬νμ νμΈνμΈμ.
μ΄ μ§μμ΄λ νμΌμ΄ λͺ μμ μΌλ‘ κΈ°μ‘΄ λ΄μ₯ lib νμΌμ ν¬ν¨νλλ‘ ν©λλ€.
λ΄μ₯ lib νμΌμ _tsconfig.json_μ "lib"μ»΄νμΌλ¬ μ΅μ
κ³Ό κ°μ λ°©μμΌλ‘ μ°Έμ‘°λ©λλ€ (μ :lib = "es2015.d"tsκ° μλ lib = "es2015"μ¬μ© λ±).
DOM API λλSymbol λλ Iterableκ³Ό κ°μ λ΄μ₯ JS λ°νμ μμ±μμ κ°μ λ΄μ₯ νμ
μ μμ‘΄νλ μ μΈ νμΌ μμ±μμκ²λ νΈλ¦¬ν μ¬λμ μ°Έμ‘° lib μ§μμ΄λ₯Ό μ¬μ©νλ κ²μ΄ κΆμ₯λ©λλ€. μ΄μ μλ μ΄λ° .d.ts νμΌμ κ·Έλ° νμ
μ μ λ¬/μ€λ³΅ μ μΈμ μΆκ°νμ΄μΌ νμ΅λλ€.
μλ₯Ό λ€μ΄ μ»΄νμΌμμ νμΌ μ€ νλμ /// <reference lib="es2017.string" />λ₯Ό μΆκ°ν κ² κ²μ --lib es2017.stringμΌλ‘ μ»΄νμΌ νλ κ²κ³Ό κ°μ΅λλ€.
/// <reference lib="es2017.string" />
"foo".padStart(4);μ΄ μ§μμ΄λ νμΌμ κΈ°λ³Έ λΌμ΄λΈλ¬λ¦¬λΌκ³ νμν©λλ€.
μ΄ μ£Όμμ lib.d.tsμ μ΄λ₯Ό λ³νν κ²λ€μ 맨 μλ¨μμ λ³Ό μ μμ΅λλ€.
μ΄ μ§μμ΄λ μ»΄νμΌλ¬μκ² κΈ°λ³Έ λΌμ΄λΈλ¬λ¦¬(μ.lib.d.ts)λ₯Ό μ»΄νμΌμ ν¬ν¨μν€μ§ μλλ‘ μ§μν©λλ€.
μ΄λ 컀맨λ λΌμΈμ --nolibμ λ겨주λ κ²κ³Ό λΉμ·ν μν₯μ μ€λλ€.
λν --skipDefaultLibCheckλ₯Ό λ겨주면, μ»΄νμΌλ¬κ° /// <reference no-default-lib="true"/> μ κ°λ νμΌλ§ κ²μ¬νμ§ μλλ€λ κ²μ μ μνμΈμ.
κΈ°λ³Έμ μΌλ‘ AMD λͺ¨λμ μ΅λͺ
μΌλ‘ μμ±λ©λλ€.
μ΄λ λͺ¨λλ‘ λ§λ€μ΄ λ΄λ κ³Όμ μ λ²λ€λ¬(μ. r.js)μ κ°μ λ€λ₯Έ ν΄μ μ¬μ©ν κ²½μ° λ¬Έμ λ₯Ό λ°μμν¬ μ μμ΅λλ€.
amd-module μ§μμ΄λ μ»΄νμΌλ¬μκ² μ νμ μΌλ‘ λͺ¨λμ μ΄λ¦μ λκΈΈ μ μλλ‘ ν΄μ€λλ€:
///<amd-module name="NamedModule"/>
export class C {
}μ΄λ AMD define νΈμΆμ μΌλΆλ‘ NamedModule μ΄λ¦μ λͺ¨λμ ν λΉνλ κ²°κ³Όλ₯Ό λ³μ κ²μ
λλ€:
define("NamedModule", ["require", "exports"], function (require, exports) {
var C = (function () {
function C() {
}
return C;
})();
exports.C = C;
});Note: μ΄ μ§μμ΄λ deprecated λμμ΅λλ€. λμ
import "moduleName";λ¬Έμ μ¬μ©νμΈμ.
/// <amd-dependency path="x" />λ μ»΄νμΌλ¬μκ² TS-κ° μλ λͺ¨λμ μμ‘΄μ±μ΄ κ²°κ³Ό λͺ¨λμ require νΈμΆμ μΆκ°λμ΄μΌ νλ€κ³ μ립λλ€.
amd-dependeny μ§μμ΄λ μ νμ μΌλ‘ name νλ‘νΌν°λ₯Ό κ°μ΅λλ€; μ΄λ‘ μΈν΄ amd-dependencyμ μ νμ μΌλ‘ μ΄λ¦μ μ λ¬ν μ μμ΅λλ€:
/// <amd-dependency path="legacy/moduleA" name="moduleA"/>
declare var moduleA:MyType
moduleA.callStuff()μμ±λ JS μ½λ:
define(["require", "exports", "legacy/moduleA"], function (require, exports, moduleA) {
moduleA.callStuff()
});