[tsconfigμ λͺ¨λ κ²] Compiler options / Emit
μ΄λ² ν¬μ€ν
μμλ μ§λ [tsconfigμ λͺ¨λ κ²] Compiler options / Modules ν¬μ€ν
μ μ΄μ΄ tsconfig
μ μ»΄νμΌ μ΅μ
μ€ μΆλ ₯ νμΌμ 컨νΈλ‘€ νλ μ΅μ
λ€μ μκ°ν μμ μ΄λ€.
μ΄ μ΅μ λ€μ νμ μ€ν¬λ¦½νΈμμλ§ μ§μλλ λ¬Έλ²λ€μ μλ°μ€ν¬λ¦½νΈλ‘ μ΄λ»κ² ννν κ²μΈμ§, νΉμ ES6 μ΄μμ λ¬Έλ²μ ES5λ‘ νΈλμ€νμΌλ§ν λ μ΄λ»κ² ννν κ²μΈμ§μ κ°μ΄ νμ μ€ν¬λ¦½νΈλ‘ μμ±λ μ½λλ₯Ό μ»΄νμΌν μ΄νμ μμ±λλ μλ°μ€ν¬λ¦½νΈ μ½λμ λͺ¨μ΅μ κ²°μ νλ μ΅μ λ€μ΄λ€.
λ¬Όλ‘ Babelκ³Ό κ°μ νΈλμ€νμΌλ¬κ° μ 곡ν΄μ£Όλ κΈ°λ₯κ³Ό μ€λ³΅λλ λΆλΆμ΄ μκΈ° λλ¬Έμ, TSCμ Babelμ ν¨κ» μ¬μ©νλ κ²½μ°μλ tsconfigμμ λͺ¨λ μ΅μ μ μ¬μΈνκ² μ€μ ν΄μ£Όμ§ μμλ λλ κ²½μ°λ μλ€.
declaration
κ° | μ€λͺ |
---|---|
true |
μ»΄νμΌ ν λ νμ μ μΈ νμΌλ ν¨κ» μμ±νλ€ |
false (default) |
μ»΄νμΌ ν λ μλ°μ€ν¬λ¦½νΈ νμΌλ§μ μμ±νλ€ |
declaration
μ΅μ
μ νμ
μ€ν¬λ¦½νΈμ *.d.ts
νμΌμ λ΄λ³΄λΌμ§ λ§μ§λ₯Ό κ²°μ νλ μ΅μ
μ΄λ€. λ§μ½ κΈ°λ³Έμ μΌλ‘ μ΄ μ΅μ
μ κΊΌμ ΈμκΈ° λλ¬Έμ, λ³λμ μ€μ μμ΄ νμ
μ€ν¬λ¦½νΈλ₯Ό μ»΄νμΌνκ² λλ©΄ *.js
νμΌλ§ λ©κ·Έλ¬λ μμ±λλ λͺ¨μ΅μ λ³Ό μ μλ€.
// math.ts
export const add = (x: number) => (y: number) => x + y;
// math.js
export var add = function (x) { return function (y) { return x + y; }; };
νμ§λ§ declaration
μ΅μ
μ μΌκ² λλ©΄, μμ±λ μλ°μ€ν¬λ¦½νΈ νμΌ μΈμλ νμ
μ μΈμ λ΄κ³ μλ *.d.ts
νμΌμ ν¨κ» μμ±νκ²λλ€.
// math.d.ts
export declare const add: (x: number) => (y: number) => number;
λ§μ½ μ¬λ¬λΆμ΄ λ§λ λͺ¨λμ΄ νμ
μ€ν¬λ¦½νΈλ₯Ό μ§μνλλ‘ νκ³ μΆλ€λ©΄, μ¬μ©μκ° μ§μ λͺ¨λμ μμ€μ½λλ₯Ό κ°μ Έμ¬ μ μλλ‘ νμ©νκ±°λ μλ°μ€ν¬λ¦½νΈ νμΌμ μ 곡νλ νμ
μ μΈ νμΌμΈ *.d.ts
νμΌμ ν¨κ» μ 곡ν΄μ€μΌ νκΈ° λλ¬Έμ, νμ
μ€ν¬λ¦½νΈ λμμ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°λ°νλ€λ©΄ μ΄ μ΅μ
μ μ¬μ©νμ¬ μ»΄νμΌ μ νμ
μ μΈ νμΌκΉμ§ ν¨κ» μμ±νλ κ²μ μΆμ²νλ€.
declarationDir
νμ | μ€λͺ |
---|---|
string |
νμ μ μΈ νμΌμ λ΄λ³΄λΌ λλ ν 리μ κ²½λ‘ |
declarationDir
μ΅μ
μ μ΄λ¦ κ·Έλλ‘ νμ
μ μΈ νμΌμ λ΄λ³΄λΌ κ²½λ‘λ₯Ό μ€μ ν μ μλ μ΅μ
μ΄λ€. μ΄λ .
κ° μλ―Ένλ νμ¬ κ²½λ‘λ tsconfig
νμΌμ΄ μμΉν κ³³μ μλ―ΈνκΈ° λλ¬Έμ, λ§μ½ μ»΄νμΌλ νμΌλ€μ΄ μμΉν λλ ν 리 μ μͺ½μ νμ
μ μΈ νμΌμ λ΄λ³΄λ΄κ³ μΆλ€λ©΄ ./types
μ κ°μ κ²½λ‘κ° μλ, ./{outDir}/types
μ κ°μ΄ λλ ν 리λ₯Ό μ§μ μ§μ ν΄μ€μΌ νλ€.
λ§μ½ declarationDir
μ΅μ
μ λ³λλ‘ μ€μ ν΄μ£Όμ§ μλλ€λ©΄ νμ
μ μΈ νμΌμ μμ μ μλ³Έ μλ°μ€ν¬λ¦½νΈ νμΌκ³Ό λμΌν μμΉμ μμ±λλ€.
declarationDir μ΅μ
μ μ€μ νμ§ μμ κ²½μ°
myProject
βββ math.ts
βββ dist
β βββ math.d.ts <
β βββ math.js
βββ tsconfig.json
declarationDir μ΅μ
μ "./dist/types"λ‘ μ€μ ν κ²½μ°
myProject
βββ math.ts
βββ dist
β βββ math.js
β βββ types
β βββ math.d.ts <
βββ tsconfig.json
μ΄λ κ² νλμ λλ ν 리μ νμ
μ μΈ νμΌμ λͺ¨μλκ² λλ©΄ μΆν package.json
μ types
νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νΈνκ² ν΄λΉ ν¨ν€μ§μ νμ
μ μΈ νμΌλ€μ μμΉλ₯Ό μ§μ ν μ μμΌλ―λ‘ νμλ declarationDir
μ΅μ
μ μ¬μ©νμ¬ νμ
μ μΈμ ν κ³³μ λͺ¨μλλ νΈμ΄λ€.
declarationMap
κ° | μ€λͺ |
---|---|
true |
νμ μ μΈκ³Ό μμ€ μ½λλ₯Ό μ°κ²°νλ 맀ν νμΌμ μμ±νλ€ |
false (default) |
맀ν νμΌμ μμ±νμ§ μλλ€ |
declarationMap
μ΅μ
μ κ°λ°μκ° IDEμμ μ 곡νλ βGo to Definitionβ κ°μ λ€λΉκ²μ΄μ
κΈ°λ₯μ ν΅ν΄ μλ³Έ μμ€ νμΌλ‘ μ΄λν μ μλλ‘ λμμ£Όλ 맡ν νμΌμ ν¨κ» μμ±ν κ²μΈμ§μ λν μ¬λΆλ₯Ό κ²°μ νλ€.
μμ μμ보μλ―μ΄ declaration
μ΅μ
μ μ¬μ©νμ¬ νμ
μ μΈ νμΌμ μμ±νκ² λλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όλ¬Όμ΄ μ»΄νμΌλλ€.
// math.ts (μλ³Έ μμ€ νμΌ)
export const add = (x: number) => (y: number) => x + y;
// math.js (μλ°μ€ν¬λ¦½νΈ)
export var add = function (x) { return function (y) { return x + y; }; };
// math.d.ts (νμ
μ μΈ)
export declare const add: (x: number) => (y: number) => number;
μ΄λ μ€μ λ‘ μ€νλλ μ½λλ₯Ό λ΄κ³ μλ μλ°μ€ν¬λ¦½νΈ μ½λμ νμ
μ μΈμ λ΄κ³ μλ νμ
μ μΈ νμΌμ μ°κ΄ κ΄κ³λ₯Ό μ μν 맀ν νμΌμ΄ μλ€λ©΄, IDEμμ λ€λΉκ²μ΄ν
κΈ°λ₯μ μ¬μ©νμ λ μμ€ μ½λκ° μλ, math.d.ts
νμΌμ νμ
μ μΈμΌλ‘ μ΄λνκ² λλ€.
νμ§λ§ μ΄μ°¨νΌ κ°λ°μ μμ μ μμ€ μ½λμλ νμ μ μΈμ λν μ 보λ λ€ λ ΈμΆλκ³ μκΈ° λλ¬Έμ, λ€λΉκ²μ΄ν μ μ¬μ©νλ κ²½μ°λ νμ μ μΈ μ μλ₯Ό μκ³ μΆλ€κΈ° 보λ€λ μ€μ λ‘ ν¨μμ λ΄λΆ ꡬνμ λ³΄κ³ μΆμ κ²½μ°κ° λλΆλΆμΌ κ²μ΄λ€.
μ΄λ° μν©μμ declarationMap
μ΅μ
μ μ¬μ©νλ©΄ κ°λ°μκ° λ€λΉκ²μ΄ν
κΈ°λ₯μ μ¬μ©νμ λ νμ
μ μΈμ΄ μλ μμ€ μ½λλ‘ μ΄λν μ μλλ‘ λ³λμ 맀ν νμΌμ ν¨κ» μμ±ν΄μ€ μ μλ€.
// math.d.ts (νμ
μ μΈ)
export declare const add: (x: number) => (y: number) => number;
//# sourceMappingURL=math.d.ts.map
// math.d.ts.map
{
"version":3,
"file":"math.d.ts",
"sourceRoot":"",
"sources":["../../../utils/math.ts"],
"names":[],
"mappings":"AAAA,eAAO,MAAM,GAAG,MAAO,MAAM,SAAS,MAAM,WAAU,CAAC"
}
맀ν νμΌμ JSON ν¬λ§·μΌλ‘ ꡬμ±λμ΄ μμΌλ©°, νμ μ μΈμ΄ μ μλ νμΌκ³Ό κ°μ κ²½λ‘μ μμ±λλ€. μ΄ λ§€ν νμΌμ μλ³Έ μμ€ μ½λμ κ²½λ‘λ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ, IDEμ λ€λΉκ²μ΄ν κΈ°λ₯μ μ¬μ©νμ λ βμμ€μ½λλ μ¬κΈ°κ° μλλΌ μ΄ κ²½λ‘μ μμβμ΄λΌκ³ μλ €μ€ μ μλ κ²μ΄λ€.
μ¦, μ΄ κΈ°λ₯μ 100% νμ©νκ³ μΆλ€λ©΄ npm λ μ§μ€νΈλ¦¬μ λͺ¨λμ λ°°ν¬ν λ λ°λμ μμ€ μ½λκ° ν¨κ» ν¬ν¨λμ΄μΌ νλ€. μΌλ°μ μΌλ‘ npm λ μ§μ€νΈλ¦¬μ λ°°ν¬ν λ μμ€μ½λκ° μλ λΉλ κ²°κ³Όλ¬Όλ§μ λ°°ν¬νλ κ²½μ°κ° λ§μλ°, μ΄λ κ² λλ©΄ μ΄μ°¨νΌ λΌμ΄λΈλ¬λ¦¬ λ΄μ μμ€μ½λκ° ν¬ν¨λμ΄ μμ§ μκΈ° λλ¬Έμ 맀ν νμΌμ ν¨κ» λ£μ΄μ€λ μλ―Έκ° μμ΄μ§λ κ²μ΄λ€.
λ¨μν npm λ μ§μ€νΈλ¦¬μ μμ€μ½λκΉμ§ ν¬ν¨ν΄μ λ°°ν¬νλ€κ³ ν΄μ λ΄κ° λ§λ λͺ¨λμ μ¬μ©ν μ΄ν리μΌμ΄μ
μ λ²λ€ μ¬μ΄μ¦κ° λμ΄λλ κ²λ μλλ, λ΄κ° λ§λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ°λ°μλ€μ μμ°μ±κ³Ό νΈμμ±μ λ§μ΄ λνμ£ΌκΈ° μν΄ declarationMap
μ μΌκ³ μμ€μ½λκΉμ§ ν¬ν¨ν΄μ npm λ μ§μ€νΈλ¦¬μ λ°°ν¬νλ κ²μ μΆμ²νλ€.
downlevelIteration
κ° | μ€λͺ |
---|---|
true |
ES6μ μΆκ°λ μ΄ν°λ μ΄μ κΈ°λ₯μ λν λͺ νν ꡬνμ ν¨κ» μμ±νλ€ |
false (default) |
κΈ°λ³Έμ μΈ νΈλμ€νμΌλ§λ§μ μννλ€ |
downlevelIteration
μ΅μ
μ νμ
μ€ν¬λ¦½νΈκ° ES6μμ μΆκ°λ for/of
, Spread
, Symbol.iterator
λ±μ κΈ°λ₯μ λ³΄λ€ λͺ
ννκ² νΈλμ€νμΌλ§μ νλλ‘ λ§λ€ μ μλ μ΅μ
μ΄λ€.
μ»΄νμΌ νκ²μΈ μλ°μ€ν¬λ¦½νΈ λ²μ μ΄ ES6 μ΄μμ΄λΌλ©΄ μ΄ μ΅μ μ ν¬κ² μλ―Έκ° μμ§λ§, ν¬λ‘μ€ λΈλΌμ°μ§ λ±μ μν΄ ES5 μ΄νμ λ²μ μ μ»΄νμΌ νκ²μΌλ‘ μΌλ κ²½μ°μλ μλ°μ€ν¬λ¦½νΈκ° μ€νλλ λ°νμ λ μ΄ν°λ μ΄ν°λ€μ΄ κ°λ°μμ μλμ λ€λ₯΄κ² λμνλ κ²μ λ°©μ§ν μ μλ€.
μλ₯Ό λ€μ΄ for/of
λ₯Ό μ¬μ©ν νμ
μ€ν¬λ¦½νΈ μ½λλ₯Ό ES5λ‘ νΈλμ€νμΌλ§νλ€λ©΄, μλμ κ°μ κ²°κ³Όλ¬Όμ λ§λλ³Ό μ μλ€.
const str = 'Hello!';
for (const s of str) {
console.log(s);
}
'use strict';
var str = 'Hello!';
for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {
var s = str_1[_i];
console.log(s);
}
for/of
λ ES5μλ μλ κΈ°λ₯μ΄λ―λ‘ νμ
μ€ν¬λ¦½νΈλ for/of
λ₯Ό μΌλ°μ μΈ for
λ¬ΈμΌλ‘ νΈλμ€νμΌλ§ ν κ²μ΄λ€.
μ¬κΈ°κΉμ§ 보면 λ³λ‘ λ¬Έμ κ° μλ κ² κ°μ§λ§, μ¬μ€ μ΄λ κ² νΈλμ€νμΌλ§λ μ½λλ μλ³Έ μ½λμ μ νν μΌμΉνλ λμμ 보μ¬μ£Όμ§λ μλλ€. λ°λ‘ μ΄λ° μ½λ λλ¬Έμ΄λ€.
const str = 'π';
for (const s of str) {
console.log(s);
}
μ μ½λμμ μ¬μ©λ π μ΄λͺ¨μ§λ νμκ° κ°μΈμ μΌλ‘λ μμ£Ό μ μ©νκ³ μλ μ΄λͺ¨μ§μ΄λ€. λ¨μν λμ 보μ΄λ λ¬Έμμ μκ° ν κ°μ΄κΈ° λλ¬Έμ μ΄ μ΄λͺ¨μ§μ κΈΈμ΄λ λΉμ°ν 1
μ΄λΌκ³ μκ°ν μ μμ§λ§, μ¬μ€ μ΄λͺ¨μ§λ€μ κΈΈμ΄λ 1
μ΄ μλλ€.
'π'.length // 2
'π©ββ€οΈβπβπ©'.length // 11
μ¦, μ΄ μ΄λͺ¨μ§μ κΈΈμ΄λ₯Ό μ¬μ©νμ¬ μΌλ°μ μΈ for
λ¬Έμ μμ±νκ² λλ©΄ μ λλ‘ λ λ¬Έμλ₯Ό λ½μλ΄κΈ°κ° μ΄λ €μΈ μ μλ€λ κ²μ΄λ€. λ¬΄μ¨ λ§μΈμ§ μ μ΄ν΄κ° μ λλ€λ©΄, μλ μ½λλ₯Ό ν¬λ‘¬ κ°λ°μλꡬμ 볡λΆν΄μ νλ² μ€νμμΌλ³΄μ.
const str = "π";
for (let i = 0; i < str.length; i++) {
console.log(`for문 > ${str[i]}`);
}
for (const s of str) {
console.log(`for/of문 > ${s}`);
}
for문 > �
for문 > �
for/ofλ¬Έ > π
μ΄κ²μ΄ λ°λ‘ for/of
λ¬Έμ κ·Έλ₯ for
λ¬ΈμΌλ‘ νΈλμ€νμΌλ§νλ©΄ μ λλ μ΄μ μ΄λ€.
μ΄μ²λΌ μ΄λͺ¨μ§μ κΈΈμ΄κ° 1μ΄ μλ μ΄μ λ₯Ό κ°λ¨νλ§ μ€λͺ νμλ©΄, μΌλ¨ μ΄λͺ¨μ§κ° λ©ν°λ°μ΄νΈ λ¬Έμμ΄κΈ° λλ¬Έμ΄κΈ°λ νκ³ κ³μ ν΄μ μλ‘μ΄ μ΄λͺ¨μ§κ° μΆκ°λκΈ°λ νκ³ κΈ°μ‘΄ μ΄λͺ¨μ§λ€μ κ²°ν©ν μ΄λͺ¨μ§λ€μ΄ λμ€λ©΄μ μ΄λͺ¨μ§λ₯Ό νννλ λ°©λ²μ΄ κ΄΄λν΄μ Έμ κ·Έλ κΈ°λ νλ€. μ΄λͺ¨μ§ κΈΈμ΄μ λν μμΈν λ΄μ©μ μ΄ ν¬μ€ν μ μ μ€λͺ λμ΄μμΌλ νλ² μ½μ΄λ³΄λλ‘ νμ.
μ΄μ°λλ μ¬κΈ°μ μ€μν ν¬μΈνΈλ for/of
μ for
μ λμμ΄ μ μ¬νλ€κ³ ν΄μ 묻μ΄λκ³ νΈλμ€νμΌλ§μ νλ€κ°λ μ΄λ° μ°Έμ¬κ° λ°μν μλ μλ€λ κ²μ΄λ€.
κ·Έλμ νμ
μ€ν¬λ¦½νΈλ downlevelIteration
μ΄λΌλ μ΅μ
μ λ³λλ‘ μ 곡ν΄μ for/of
, Spread
, Symbol.iterator
μ κ°μ μ΄ν°λ μ΄μ
κΈ°λ₯μ΄ κ°λ°μμ μλμ λ€λ₯΄κ² λμνμ§ μλλ‘ Symbol.iterator
κ°μ κΈ°λ₯μ΄ μλμ§ κ²μ¬νκ±°λ, μμ μ΄λ° κΈ°λ₯μ ꡬνν΄λμ ν΄λ¦¬νκΉμ§ ν¨κ» μΆκ°ν μ μλλ‘ λ§λ€μ΄ λμλ€.
emitBOM
κ° | μ€λͺ |
---|---|
true |
νμ μ€ν¬λ¦½νΈκ° μΆλ ₯ νμΌμ μμ±ν λ BOMμ νμνλ€ |
false (default) |
νμ μ€ν¬λ¦½νΈκ° μΆλ ₯ νμΌμ μμ±ν λ BOMμ νμνμ§ μλλ€ |
emitBOM
μ΅μ
μ νμ
μ€ν¬λ¦½νΈκ° μΆλ ₯ νμΌμ μμ±ν λ BOM(Bite Order Mark)λ₯Ό νμν μ§ λ§μ§λ₯Ό κ²°μ ν μ μλ μ΅μ
μ΄λ€.
Bite Order Markλ νΉλ³ν μ λμ½λλ₯Ό νμΌμ κ°μ₯ μ λΆλΆμ μΆκ°ν΄μ μ΄ νμΌμ΄ μ΄λ€ μΈμ½λ© λ°©μμ μ¬μ©νλμ§λ₯Ό λνλ΄λ λ°©λ²μ΄λ€.
BOMμ μ μ΄μ μ¬λμ΄ μ½μ λͺ©μ μ΄ μλλΌ μ»΄ν¨ν°μκ² νμ¬ νμΌμ μΈμ½λ© μ 보λ₯Ό μ리기 μν΄μλ§ μ¬μ©νκΈ° λλ¬Έμ, ν μ€νΈ μλν°λ vim κ°μ κ³³μμ νμΌμ μ΄μ΄λ³΄μλ BOMμ 보μ¬μ£Όμ§λ μλλ€.
κ·Έλ¬λ μΌλ°μ μΌλ‘ μλ°μ€ν¬λ¦½νΈκ° μ€νλλ λ°νμ νκ²½μμ κ΅³μ΄ BOMκΉμ§ νμν κ²½μ°κ° νμΉ μκΈ°λ νκ³ , μ λμ½λ 3.2λΆν°λ BOMμ μ¬μ©νμ§ μμ κ²μ κΆμ₯νκ³ μκΈ°λ ν΄μ, κ΅³μ΄ μΌ€ νμκ° μλ μ΅μ μ΄κΈ°λ νλ€. (νμ μ€ν¬λ¦½νΈ 곡μ λ¬Έμμμλ κ΅³μ΄ μ μΌλ λλ€κ³ νκ³ μλ€)
emitDeclarationOnly
κ° | μ€λͺ |
---|---|
true |
μλ°μ€ν¬λ¦½νΈ μμ΄ νμ μ μΈ νμΌλ§μ μΆλ ₯νλ€ |
false (default) |
μλ°μ€ν¬λ¦½νΈ νμΌμ ν¬ν¨νμ¬ μΆλ ₯νλ€ |
emitDeclarationOnly
μ΅μ
μ Declaration onlyλΌλ μ΄λ¦ κ·Έλλ‘, μ»΄νμΌμ μ§νν λ μλ°μ€ν¬λ¦½νΈ νμΌ μμ΄ νμ
μ μΈ νμΌλ§μ μΆλ ₯ν μ§μ λν μ¬λΆλ₯Ό κ²°μ νλ μ΅μ
μ΄λ€.
λ³΄ν΅ νμ μ€ν¬λ¦½νΈλ₯Ό μλ°μ€ν¬λ¦½νΈλ‘ λ³νν λ νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬κ° μλ λ³λμ λꡬλ₯Ό μ¬μ©νλ κ²½μ°λ, κΈ°μ‘΄μ μλ°μ€ν¬λ¦½νΈλ‘ λ§λ€μ΄μ§ λͺ¨λμ νμ μ μΈλ§μ μ 곡ν΄μΌνλ κ²½μ°μ μ¬μ©νκ² λλ€.
importHelpers
κ° | μ€λͺ |
---|---|
true |
μΆλ ₯ νμΌ λ΄μμ tslibκ° μ 곡νλ ν¬νΌ ν¨μλ€μ μ¬μ©νλ€ |
false (default) |
tslibκ° μ 곡νλ ν¬νΌ ν¨μλ₯Ό μ¬μ©νμ§ μκ³ μ§μ ν¬νΌλ₯Ό ꡬννλλ‘ νλ€ |
importHelpers
μ΅μ
μ νμ
μ€ν¬λ¦½νΈλ₯Ό μλ°μ€ν¬λ¦½νΈ ES5 μ΄νμ λ²μ μΌλ‘ νΈλμ€νμΌλ§ν λ λ°μνλ ν¬νΌ ν¨μλ€μ μΆλ ₯ νμΌ λ΄μ μ§μ μμ±ν κ²μ΄λ, μλλ©΄ tslib
λΌμ΄λΈλ¬λ¦¬κ° μ 곡νλ ν¬νΌ ν¨μλ‘ λ체ν μ μλλ‘ ν κ²μ΄λλ₯Ό κ²°μ ν μ μλ μ΅μ
μ΄λ€.
νλ² μμ€ μ½λμ μΆλ ₯ νμΌμ ν¨κ» 보면μ μ΄ν΄ν΄λ³΄λλ‘ νμ.
export function fn(arr: number[]) {
return [1, ...arr];
}
fn
ν¨μλ μΈμλ‘ λ°μ λ°°μ΄μ 맨 μμ 1
μ΄λΌλ μμλ₯Ό μΆκ°ν΄μ λ°ννλ κ°λ¨ν ν¨μμ΄λ€. μ¬λ¬λΆλ μμλ€μνΌ [...arr]
λΌλ λ¬Έλ²μΌλ‘ μ¬μ©ν μ μλ Spread κΈ°λ₯μ ES5μ ν¬ν¨λμ΄μμ§ μμΌλ―λ‘, νμ
μ€ν¬λ¦½νΈλ __spreadArray
λΌλ ν¬νΌ ν¨μλ₯Ό μΆλ ₯ νμΌ λ΄μ μΆκ°νμ¬ Spread κΈ°λ₯μ νΈλμ€νμΌλ§νλ€.
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
export function fn(arr) {
return __spreadArray([1], arr, true);
}
μ¬κΈ°μ μ€μν κ²μ ES6μ Spread κΈ°λ₯μ ꡬννκΈ° μν΄ __spreadArray
λΌλ ν¨μμ ꡬνμ΄ μΆλ ₯ νμΌ λ΄μ ν¨κ» ν¬ν¨λμλ€λ κ²μ΄λ€. μ¬μ€ μ΄λ° ꡬνμ΄ μΆλ ₯ νμΌλ΄μ ν¬ν¨λλ κ²μ΄ ν° λ¬Έμ λ μλ μ μμ§λ§, λ§μ½ μ __spreadArray
λ₯Ό λ€λ₯Έ κ³³μμ λ μ¬μ©ν΄μΌνλ κ²½μ°μλ κ·Έ λͺ¨λμ λ λ€μ __spreadArray
ν¨μμ ꡬνμ΄ μΆκ°λκΈ° λλ¬Έμ μ€λ³΅λ μ½λκ° λ°μνκ² λλ€.
μ΄λ importHelpers
μ΅μ
μ μ¬μ©νκ² λλ©΄ μ΄λ¬ν ν¬νΌ ν¨μλ€μ tslib
λΌμ΄λΈλ¬λ¦¬μμ κ°μ Έμ€λλ‘ λ³κ²½νμ¬ μ½λμ μ€λ³΅μ μ κ±°ν μ μλ€.
import { __spreadArray } from 'tslib';
export function fn(arr) {
return __spreadArray([1], arr, true);
}
μ΄λ κ² λλ©΄ __spreadArray
ν¨μλ₯Ό tslib
μμ λΆλ¬μμ μ¬μ©νκ² λλ―λ‘, λ§€λ² __spreadArray
ν¨μλ₯Ό μ μΈν νμκ° μ¬λΌμ§κΈ° λλ¬Έμ μ½λμ μ€λ³΅μ μ κ±°ν μ μλ€. νμ§λ§ μ΄ μ΅μ
μ μ¬μ©νμ¬ νΈλμ€νμΌλ§λ μ½λλ λΉμ°ν tslib
ν¨ν€μ§λ₯Ό μ€μΉλμ΄μμ΄μΌ μ λλ‘ μλνλ―λ‘, ν¬νΌ ν¨μμ μ€λ³΅λ ꡬνμ νμ©νλ κ²κ³Ό tslib
λ₯Ό λ΄ μ΄ν리μΌμ΄μ
μ μ€μΉνλ κ²μ λκ³Ό μ€μ μ λ°μ Έλ³΄κ³ μ΅μ
μ μ¬μ©νλλ‘ νμ.
importsNotUsedAsValues
κ° | μ€λͺ |
---|---|
remove |
μΆλ ₯ νμΌμμ λ°νμ λ νμμλ import λ¬Έμ μ κ±°νλ€ |
preserve |
μΆλ ₯ νμΌμμ νμ μ 보λ μ κ±°νλ, import λ¬Έμ μ μ§νλ€ |
error |
νμ μ λ³΄λ§ κ°μ Έμ€λ import λ¬Έμ μ¬μ©νμ λ μλ¬λ₯Ό λ°μμν¨λ€ |
importsNotUsedAsValues
μ΅μ
μ νμ
μ€ν¬λ¦½νΈκ° μΆλ ₯ νμΌμ μμ±ν λ νμμλ import ꡬ문μ μ²λ¦¬νλ λ°©λ²μ μ μ΄ν μ μλ μ΅μ
μ΄λ€. μ΄ μ΅μ
μ΄ κ°μ§λ μλ―Έλ₯Ό μκΈ° μν΄μλ νμ
μ€ν¬λ¦½νΈκ° import λ¬Έμ μ²λ¦¬νλ λ°©λ²μ λν΄μ μ‘°κΈ μμμΌ νλ€.
κΈ°λ³Έμ μΌλ‘ νμ μ€ν¬λ¦½νΈκ° μ»΄νμΌμ ν΅ν΄ μλ°μ€ν¬λ¦½νΈ νμΌμ μμ±ν λ, νμ κ³Ό κ΄λ ¨λ μ 보λ μ§μλ²λ¦°λ€. μ½λλ₯Ό 보면μ νλ² μ΄ν΄ν΄λ³΄λλ‘ νμ.
import { InterfaceFoo } from '../utils/foo';
import { ClassBar } from '../utils/bar';
const classBar: InterfaceFoo = new ClassBar();
import { ClassBar } from '../utils/bar';
var classBar = new ClassBar();
μ μ½λλ₯Ό 보면 InterfaceFoo
μΈν°νμ΄μ€λ₯Ό κ°μ Έμ€λ import λ¬Έμ΄ μλ°μ€ν¬λ¦½νΈ μΆλ ₯ νμΌ λ΄μμλ μ¬λΌμ§ κ²μ λ³Ό μ μλ€. μλνλ©΄ μλ°μ€ν¬λ¦½νΈμλ νμ
μ€ν¬λ¦½νΈμ νμ
μ΄λ μΈν°νμ΄μ€ κ°μ κΈ°λ₯μ΄ μμΌλ, νμ
μ 보λ₯Ό λ¨κ²¨λλ΄€μ μλ―Έκ° μκΈ° λλ¬Έμ΄λ€.
λ¬Όλ‘ μμ μ΄μΌκΈ°νλλ‘ νμ
μ 보λ μ΄μ°¨νΌ μλ°μ€ν¬λ¦½νΈμμ μ¬μ©ν μ μμΌλ, μ΄λ° μ 보λ μ κ±°νλ κ²μ΄ λ§μ§λ§, λ§μ½ ../utils/foo
λͺ¨λμ΄ μλμ μΈ μ¬μ΄λμ΄ννΈλ₯Ό ν¬ν¨νκ³ μμ κ²½μ°μλ λ¬Έμ κ° λ°μν μ μλ€.
// utils/foo.ts
export interface InterfaceFoo {}
console.log('hello world!');
utils/foo.ts
λͺ¨λμ μΈν°νμ΄μ€λ§μ λ
ΈμΆνκ³ μλ λͺ¨λμ΄μ§λ§, λ΄λΆμλ console.log
λΌλ μ¬μ΄λ μ΄ννΈλ₯Ό ν¬ν¨νκ³ μλ€. μ΄ μμμμλ λ¨μν μ½μ μΆλ ₯μ΄μ§λ§, μ€μ λ‘ Angular κ°μ κ²½μ°λ μ΄λ° λͺ¨λ λ΄λΆμμ λͺ
μμ μΌλ‘ λͺ¨λμ μ£Όμ
νκ³ λ±λ‘νλ μ¬μ΄λ μ΄ννΈκ° ν¬ν¨λκΈ°λ νλ€.
λ¬Έμ λ μ΄λ° κ²½μ°μλ νμ
μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈλ₯Ό μΆλ ₯ν λ utils/foo
λͺ¨λμ import νλ ꡬ문 μ체λ₯Ό μ§μλ²λ¦°λ€λ κ²μ΄λ€. κ·Έλ¬λ©΄ λΉμ°ν console.log
λΌλ μ¬μ΄λ μ΄ννΈλ μλ°μ€ν¬λ¦½νΈ λ°νμμμ μ€νλμ§ μλλ€. κ·Έλμ μ΄λ° κ²½μ° κ°λ°μλ€μ μλμ μΌλ‘ μ¬μ΄λ μ΄ννΈλ₯Ό μ€νμν€κΈ° μν΄ νμ
μ€ν¬λ¦½νΈλ₯Ό μμΌ μ μλ import λ¬Έμ νλ λ μΆκ°ν΄μΌνλ€.
import { InterfaceFoo } from '../utils/foo';
import '../utils/foo';
import { ClassBar } from '../utils/bar';
const classBar: InterfaceFoo = new ClassBar();
import './utils/foo';
import { ClassBar } from "../utils/bar";
var classBar = new ClassBar();
κ·Έλμ νμ
μ€ν¬λ¦½νΈ 3.8λ²μ μλ βμ΄ importλ¬Έμ΄ νμ
μ 보λ§μ κ°μ Έμ€λ ꡬ문μ΄λ€βλΌλ κ²μ λͺ
μμ μΌλ‘ ννν μ μλ import type
κΈ°λ₯μ μΆκ°νκ³ , νΉμ¬λ μΌλ°μ μΈ import λ¬Έμ μ¬μ©νμ¬ νμ
μ 보λ§μ κ°μ Έμ€λλΌλ importλ¬Έμ λ¨κ²¨λ μ μλλ‘ μ μ΄ν μ μλ importsNotUsedAsValues
μ΅μ
μ μ 곡νλ κ²μ΄λ€.
inlineSourceMap
κ° | μ€λͺ |
---|---|
false |
μμ€λ§΅ νμΌμ λ°λ‘ μμ±νλ€ |
true |
μμ€λ§΅ νμΌμ λ΄μ©μ Base64λ‘ μΈμ½λ©νμ¬ μμ€ νμΌμ μΆκ°νλ€ |
inlineSourceMap
μ΅μ
μ νμ
μ€ν¬λ¦½νΈκ° μ»΄νμΌ μ μ΄λ€ λ°©μμΌλ‘ μμ€λ§΅μ μμ±ν κ²μΈμ§λ₯Ό κ²°μ νλ μ΅μ
μ΄λ€. κΈ°λ³Έμ μΌλ‘ νμ
μ€ν¬λ¦½νΈλ *.js.map
νμΌμ ννλ‘ μμ€λ§΅μ μ 곡νλλ°, λ§μ½ inlineSourceMap
μ΄ true
μΌ κ²½μ°μλ μμ€ νμΌ λ΄λΆμ μ£ΌμμΌλ‘ μμ€λ§΅μ μΆκ°νλ€.
κ°λ¨ν ν¨μλ₯Ό κ°μ§κ³ μλ λͺ¨λμ μ§μ μ»΄νμΌν΄λ³΄λ©° μ΄λ€ μ°¨μ΄κ° μλμ§ μ§μ μμ보λλ‘ νμ.
// math.ts
export const add = (x: number) => (y: number) => x + y;
λ§μ½ inlineSourceMap
μ΅μ
μ΄ κΊΌμ Έ μλ κ²½μ°, νμ
μ€ν¬λ¦½νΈλ λ³λμ μμ€λ§΅ νμΌμ μμ±νκ³ , μ»΄νμΌλ JS νμΌμλ ν΄λΉ μμ€λ§΅μ κ²½λ‘λ§μ μ μ΄λλ ννλ‘ μμ€λ§΅μ μμ±νλ€.
// math.js
export var add = function (x) { return function (y) { return x + y; }; };
//# sourceMappingURL=math.js.map
// math.js.map
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../utils/math.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,GAAG,GAAG,UAAC,CAAS,IAAK,OAAA,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAApB,CAAoB,CAAC"}
μ΄λ μ»΄νμΌλ JS νμΌμλ μμ€λ§΅ νμΌμ κ²½λ‘κ° #sourceMappingURL=math.js.map
μ ννλ‘ μΆκ°λκ³ , μμ€λ§΅ νμΌμλ "sources": ["../../utils/math.ts"]
μ²λΌ μλ³Έ νμ
μ€ν¬λ¦½νΈ μμ€ νμΌμ κ²½λ‘κ° μ νμλ κ²μ νμΈν μ μλ€.
λ§μ½ inlineSourceMap
μ΅μ
μ μΌκ²λλ©΄ μ΄μ νμ
μ€ν¬λ¦½νΈλ μμ€λ§΅ νμΌμ μμ±νμ§ μκ³ , μ»΄νμΌλ JS νμΌ λ΄μ μ§μ μμ€λ§΅ νμΌμ λ΄μ©μ Base64λ‘ μΈμ½λ©ν΄μ μΆκ°νλ€.
export var add = function (x) { return function (y) { return x + y; }; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sR0FBRyxHQUFHLFVBQUMsQ0FBUyxJQUFLLE9BQUEsVUFBQyxDQUFTLElBQUssT0FBQSxDQUFDLEdBQUcsQ0FBQyxFQUFMLENBQUssRUFBcEIsQ0FBb0IsQ0FBQyJ9
inlineSources
κ° | μ€λͺ |
---|---|
false |
μΈλΌμΈ μμ€λ§΅μ μμ€ μ½λμ λ΄μ©μ ν¬ν¨μν€μ§ μλλ€. |
true |
μΈλΌμΈ μμ€λ§΅μ μμ€ μ½λμ λ΄μ©λ ν¨κ» ν¬ν¨μν¨λ€ |
inlineSources
μ΅μ
μ inlineSourceMap
μ΅μ
μ μ¬μ©νμ¬ λ§λ€μ΄λΈ μΈλΌμΈ μμ€λ§΅μ μλ³Έ μμ€ μ½λμ λ΄μ©λ ν¨κ» ν¬ν¨μν¬ κ²μΈμ§ μ¬λΆλ₯Ό κ²°μ νλ€.
μ΄ μ΅μ
μ κ°μ΄ true
μΈ κ²½μ°, μΈλΌμΈ μμ€λ§΅μ sourceContent
λΌλ νλκ° μΆκ°λκ³ ν΄λΉ νλμλ μμ€ μ½λμ λ΄μ©μ΄ ν¨κΌ ν¬ν¨λλ€.
export var add = function (x) { return function (y) { return x + y; }; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sR0FBRyxHQUFHLFVBQUMsQ0FBUyxJQUFLLE9BQUEsVUFBQyxDQUFTLElBQUssT0FBQSxDQUFDLEdBQUcsQ0FBQyxFQUFMLENBQUssRUFBcEIsQ0FBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBhZGQgPSAoeDogbnVtYmVyKSA9PiAoeTogbnVtYmVyKSA9PiB4ICsgeTtcbiJdfQ==
// Decodingλ μμ€λ§΅
{
"version":3,
"file":"math.js",
"sourceRoot":"",
"sources":["../../utils/math.ts"],
"names":[],
"mappings":"AAAA,MAAM,CAAC,IAAM,GAAG,GAAG,UAAC,CAAS,IAAK,OAAA,UAAC,CAAS,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAApB,CAAoB,CAAC",
"sourcesContent":["export const add = (x: number) => (y: number) => x + y;\n"]
}
μ μ΄μ μμ€λ§΅μ μ€ν μ sourceContent
νλλ μλ³Έ μμ€ νμΌμ μ κ·Όνμ§ λͺ»ν κ²½μ°λ₯Ό λμνκΈ° μν μΌμ’
μ μμΈμ²λ¦¬μ κ°κΉμ°λ―λ‘, κ΅³μ΄ μΌμ§ μμλ ν° λ¬Έμ κ° μλ μ΅μ
μ΄κΈ°λ νλ€.
noEmit
κ° | μ€λͺ |
---|---|
false |
μ»΄νμΌ νμ μΆλ ₯ νμΌμ λ΄λ³΄λΈλ€ |
true |
μ»΄νμΌ νμ μΆλ ₯ νμΌμ λ΄λ³΄λ΄μ§ μλλ€ |
noEmit
μ΅μ
μ μ΄λ¦ κ·Έλλ‘ νμ
μ€ν¬λ¦½νΈκ° μ»΄νμΌμ ν μ΄νμ μΆλ ₯ νμΌλ€μ λ΄λ³΄λΌ κ²μΈμ§μ λν λμμ κ²°μ νλ€. μ€λͺ
λ§ λ€μ΄λ³΄λ©΄ μ΄λ° κ²½μ°κ° νμν κΉ μΆκΈ°λ νλ°, μκ°λ³΄λ€ μ μ©νκ² μμ£Ό μ°μ΄λ μ΅μ
μ΄λ€.
λνμ μΈ μλ‘λ CIλ Git Hook κ°μ νμ΄λ°μ μ μ νμ
체ν¬λ§ μ§νν΄μΌ νλ κ²½μ° tsc --noEmit
μ κ°μ λͺ
λ Ήμ΄λ₯Ό NPM μ€ν¬λ¦½νΈλ‘ λ±λ‘ν΄λκ±°λ, Webpack, Parcel, Rollup λ±μ λꡬλ₯Ό μ¬μ©νμ¬ μ»΄νμΌμ μ§νν λλ μ μ νμ
체ν¬λ§μ TSCμκ² μν€κΈ° μν΄ ν΄λΉ μ΅μ
μ μ¬μ©νλ κ²½μ°κ° λ§λ€.
noEmitHelpers
κ° | μ€λͺ |
---|---|
false |
μ»΄νμΌλ νμΌμ __awaiter μ κ°μ ν¬νΌ ν¨μλ₯Ό ν¬ν¨μν¨λ€ |
true |
μ»΄νμΌλ νμΌμλ __awaiter μ κ°μ ν¬νΌ ν¨μλ₯Ό ν¬ν¨μν€μ§ μλλ€ |
noEmitHelpers
μ΅μ
μ μ»΄νμΌμ΄ μλ£λ μΆλ ₯ νμΌμ __awaiter
λ __generator
μ κ°μ ν¬νΌ ν¨μλ€μ ν¬ν¨μν¬μ§ μ¬λΆλ₯Ό κ²°μ νλ€.
noEmitHelpers
μ΅μ
μ λμμ΄ importHelpersμ μ μ¬νκΈ° λλ¬Έμ μ‘°κΈ ν·κ°λ¦΄ μ μλ€. importHelpers
μ΅μ
μ ν¬νΌ ν¨μλ€μ ꡬνμ βμμ€μ ν¬ν¨ν μ§β, βλ€λ₯Έ κ³³μμ importν μ§βλ₯Ό κ²°μ νλ€λ©΄, noEmitHelpers
μ΅μ
μ ν¬νΌ ν¨μλ€μ ꡬνμ βμμ€μ ν¬ν¨ν μ§β, βμμ νμ§ μμ κ²μΈμ§βλ₯Ό κ²°μ νκΈ° λλ¬Έμ΄λ€.
μ΄ μ°¨μ΄μ μ μ§μ μ»΄νμΌλ μ½λλ₯Ό 보면μ μμ보λλ‘ νμ.
// importHelpers, noEmitHelpersκ° λͺ¨λ κΊΌμ Έμλ κ²½μ°μλ μΆλ ₯ νμΌμ ν¬νΌμ ꡬνλ ν¬ν¨λλ€
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
// ...
};
var __generator = (this && this.__generator) || function (thisArg, body) {
// ...
};
export function foo() {
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/];
}); });
}
// importHelperκ° μΌμ Έμλ κ²½μ°μλ μΈλΆμμ ν¬νΌλ₯Ό κ°μ Έμ¨λ€
import { __awaiter, __generator } from "tslib";
export function foo() {
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/];
}); });
}
// noEmitHelpersκ° μΌμ Έμλ κ²½μ°μλ μμ ν¬νΌλ₯Ό κ°μ Έμ€κ±°λ μ μΈνλ μ½λ μ‘°μ°¨ μλ€
'use strict';
export function foo() {
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/];
}); });
}
λ§μ½ importHelpers
μ noEmitHelpers
μ΅μ
μ΄ λͺ¨λ μΌμ Έμλ€λ©΄ ν¬νΌ ν¨μλ₯Ό βμΈλΆμμ κ°μ Έμ¬ κ²μ΄λβ, βμΆλ ₯ νμΌμ ν¬ν¨μν€μ§ μμ κ²μ΄λβλΌλ μ€μ μ΄ μΆ©λνκ² λλλ°, μ΄ κ²½μ°μλ importHelpers
μ λμμ μ°μ μ μΌλ‘ λ°λ₯΄κ² λλ μ΄ μ μ μ£Όμνλλ‘ νμ.
noEmitOnError
κ° | μ€λͺ |
---|---|
false |
μ»΄νμΌ μ€ μλ¬κ° λ°μνλλΌλ μΆλ ₯ νμΌμ λ΄λ³΄λΈλ€ |
true |
μ»΄νμΌ μ€ μλ¬κ° λ°μν κ²½μ° μΆλ ₯ νμΌμ λ΄λ³΄λ΄μ§ μλλ€ |
noEmitOnError
μ΅μ
μ μ΄λ¦ κ·Έλλ‘ μ»΄νμΌ μ€ μ¬λ¬κ°μ§ μμΈμΌλ‘ μΈν΄ μλ¬κ° λ°μνκ² λλ κ²½μ° μΆλ ₯ νμΌμ λ΄λ³΄λΌ κ²μΈμ§μ λν μ¬λΆλ₯Ό κ²°μ νλ€. λ§μ½ μ΄ μ΅μ
μ΄ μΌμ Έμλ κ²½μ°, μ»΄νμΌ μ€ μλ¬κ° λ°μνλ©΄ μΆλ ₯ νμΌμ΄ λ΄λ³΄λ΄μ§μ§ μλλ€.
μ΄λ κ²λ§ 보면 βλΉμ°ν μλ¬κ° λλ©΄ μΆλ ₯ νμΌμ μ λ§λλ κ² λ§μ§ μλ?βλΌκ³ μκ°ν μ μμ§λ§, TSCμ Watch μ΅μ μ μ¬μ©νκ³ μλ κ°λ°νκ²½ κ°μ κ²½μ°λ μ»΄νμΌ μ€ μλ¬κ° λ°μν΄λ μΆλ ₯ νμΌμ μμ±νκ³ κ·Έλ‘ μΈν΄ λ°μνλ μ¬μ΄λ μ΄ννΈ λν ν¨κ» κ΄μ°°νλ κ²μ΄ λ νΈν μλ μκΈ° λλ¬Έμ, κ°λ°νκ²½μμλ ν΄λΉ μ΅μ μ λκ³ μ΄μνκ²½ λ°°ν¬λ₯Ό μν λΉλ νμ λλ μΌλλ κ²μ μΆμ²νλ€.
preserveConstEnums
κ° | μ€λͺ |
---|---|
false |
const enum ν€μλλ₯Ό μ¬μ©ν Enum μ μΈμ μ»΄νμΌ νμ λ μ κ±°νλ€ |
true |
const enum ν€μλλ₯Ό μ¬μ©ν Enum μ μΈμ μ»΄νμΌ νμ λ μ κ±°νμ§ μλλ€ |
preserveConstEnums
μ΅μ
μ μ»΄νμΌ νμ λ const enum ν€μλλ₯Ό μ¬μ©ν Enum μ μΈμ μ κ±°ν κ²μΈμ§μ λν μ΅μ
μ΄λ€. νμ
μ€ν¬λ¦½νΈλ λ°νμ λμ λ©λͺ¨λ¦¬ λΉμ©μ μ μ½νκΈ° μν΄ const enum
ν€μλλ‘ μ μΈν Enumμ κ°μ μ°Έμ‘°νλ λΆλΆμ ν΄λΉ Enumμ κ°μΌλ‘ μΉννλ€.
enum
ν€μλλ§μ μ¬μ©νμ¬ μ μΈν Enumκ³Ό λ€λ₯΄κ² const enum
ν€μλλ₯Ό μ¬μ©ν Enumμ λ°λμ μμ κ°λ§ κ°μ§λ κ²μ΄ 보μ₯λκΈ° λλ¬Έμ μ°Έμ‘° ν¬λͺ
μ± λν 보μ₯λκ³ , κ²°κ΅ μ»΄νμΌ νμ λ κ°μ κ·Έλ₯ μΉνν΄λ²λ €λ μ무 λ¬Έμ κ° μλ κ²μ΄λ€.
const enum Foo {
A = 1,
B = 2,
C = 3,
}
const foo = Foo.A;
var Foo;
(function (Foo) {
Foo[Foo["A"] = 0] = "A";
Foo[Foo["B"] = 1] = "B";
Foo[Foo["C"] = 2] = "C";
})(Foo || (Foo = {}));
var foo = 1 /* A */; // <= Foo.Aκ° μλ, κ°μΌλ‘ μΉνλμλ€
μ΄λ μ»΄νμΌλ μ½λλ₯Ό μμΈν 보면, Enumμ νννκΈ° μν΄ Foo
λΌλ λ³μλ₯Ό μ μΈνκ³ IIFEλ₯Ό μ¬μ©νμ¬ ν΄λΉ λ³μμ κ°μ ν λΉνκ³ μμ§λ§, μ μ μ΄ λ³μμ μ κ·Όνλ λΆλΆμ μλ κ²μ μ μ μλ€. μ¦, μ΄ JS μ½λκ° μ€νλλ λ°νμ νκ²½μμλ Foo
λΌλ λ³μκ° μμ΄λ μ무 λ¬Έμ κ° μλ€λ κ²μ΄λ€.
μ΄λ preserveConstEnums
μ΅μ
μ κ°μ false
λ‘ μ€μ νλ©΄ μ΄λ κ² λ°νμμμλ μ무 μλ―Έμλ Enum μ μΈμ μ κ±°ν μ μλ€.
var foo = 1 /* A */;
λ§μΉλ©°
μ΄λ κ² tsconfig
4λ²μ§Έ μ리μ¦μΈ Emit
νΈμ λ§λ¬΄λ¦¬νλ€. Emitκ³Ό κ΄λ ¨λ μν μ νλ μ΅μ
λ€μ μ£Όλ‘ TSCμ λ€λ₯Έ λꡬλ₯Ό κ²°ν©νμ¬ μ¬μ©νκ±°λ, λ²λ€ μ¬μ΄μ¦λ₯Ό μ΅μ νν΄μΌνλ κ²½μ°μ μ£Όλ‘ κ±΄λλ¦¬κ² λλλ°, νμ λν κ½€λ μ€λλ§μ μ΄ μ΅μ
λ€μ 곡λΆνκ² λμλ μ§λΌ μμ μ μ¨λ³Έ μ΅μ
λ€μ΄ μμμλ λΆκ΅¬νκ³ κΈ°μ΅μ΄ κ°λ¬Όκ°λ¬Ό νλ κ² κ°λ€.
μ΄μμΌλ‘ [tsconfigμ λͺ¨λ κ²] Compiler options / Emit ν¬μ€ν μ λ§μΉλ€.
κ΄λ ¨ ν¬μ€ν 보λ¬κ°κΈ°