Skip to content

Commit dca0a57

Browse files
author
Orta Therox
authored
Merge pull request #122 from ch3coo2ca/main
[ko] Handbook - Remove duplicate translations
2 parents 5b0ef24 + 3ec7cc4 commit dca0a57

File tree

1 file changed

+0
-112
lines changed

1 file changed

+0
-112
lines changed

docs/documentation/ko/reference/Namespaces and Modules.md

Lines changed: 0 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -115,118 +115,6 @@ TypeScript 모듈의 중요한 특징 중 하나는 서로 다른 두 개의 모
115115

116116
## 모듈의 트레이드-오프 (Trade-offs of Modules)
117117

118-
JS 파일과 모듈이 일대일 대응인 것처럼, TypeScript는 모듈 소스 파일과 이 파일에서 생성된 JS 파일도 일대일 대응입니다.
119-
이러한 특성 때문에 어떤 모듈 시스템을 사용하느냐에 따라서 여러 모듈 소스 파일을 합치는 작업이 불가능할 수 있습니다.
120-
예를 들어, `commonjs` 또는 `umd`를 대상으로 하는 동안에는 `outFile` 옵션을 사용할 수 없지만, TypeScript 1.8 이후부터, `amd` 또는 `system`를 대상으로 하는 경우에는 `outFile` 옵션을 [사용할 수 있게 되었습니다](./release%20notes/TypeScript%201.8.md#concatenate-amd-and-system-modules-with---outfile).
121-
이 글에서는 TypeScript에서 모듈과 네임스페이스를 사용하여 코드를 구성하는 다양한 방법을 간략하게 설명합니다.
122-
또한 네임스페이스와 모듈에 관한 몇 가지 고급 주제와 TypeScript에서 네임스페이스와 모듈을 사용할 때 흔히 마주치는 위험성을 살펴볼 것입니다.
123-
124-
ES 모듈에 대한 자세한 내용은 [모듈](./modules.md) 문서를 참고하세요.
125-
TypeScript 네임스페이스에 대한 자세한 내용은 [네임스페이스](./namespaces.md) 문서를 참고하세요.
126-
127-
참고: _매우_ 오래된 버전의 TypeScript 네임스페이스는 이전의 JavaScript 모듈 시스템인 '내부 모듈'이라고 불렸습니다.
128-
129-
# 모듈 사용하기 (Using Modules)
130-
131-
모듈에는 코드와 선언 둘 다 포함될 수 있습니다.
132-
133-
모듈은 또한 모듈 로더(예: CommonJs/Require.js)에 대한 의존성이나 ES 모듈이 지원하는 런타임을 가지고 있습니다.
134-
모듈은 더 나은 코드 재사용성을 위해, 강력한 고립성과 번들링을 위한 향상된 도구를 제공합니다.
135-
136-
또한 Node.js 애플리케이션의 경우 모듈이 기본적인 방법이며, 코드를 구조화하는 데 있어 권장하는 접근법이라는 점을 유의해야 합니다.
137-
138-
ECMAScript 2015부터, 모듈은 언어에서 기본적으로 내재한 부분이며, 모든 호환 엔진 구현은 모듈을 지원해야 합니다.
139-
따라서, 새로운 프로젝트의 경우 코드를 구성하는 방법으로 모듈을 권장합니다.
140-
141-
# 네임스페이스 사용하기 (Using Namespaces)
142-
143-
네임스페이스는 코드를 구성하는 TypeScript만의 고유한 방법입니다.
144-
네임스페이스는 간단히 전역 네임스페이스에서 JavaScript 객체로 이름 붙여집니다.
145-
이러한 점 덕분에 네임스페이스를 아주 단순한 구조로 사용할 수 있습니다.
146-
모듈과 달리, 여러 개의 파일을 포괄할 수 있으며, `--outFile`을 사용해 연결할 수 있습니다.
147-
네임스페이스는 웹 애플리케이션에서 코드를 구조화하기에 좋은 방법이며, 모든 의존성은 HTML 페이지의 `<script>` 태그로 포함합니다.
148-
149-
특히 대규모 애플리케이션의 경우, 이 방법은 모든 전역 네임스페이스가 오염되는 경우와 마찬가지로 컴포넌트의 의존성을 식별하기 힘들게 만들 수 있습니다.
150-
151-
# 네임스페이스와 모듈의 위험성 (Pitfalls of Namespaces and Modules)
152-
153-
여기서는 네임스페이스와 모듈을 사용할 때 자주 발생하는 다양한 위험성과 그 해결책을 알아보겠습니다.
154-
155-
## `/// <reference>`를 사용한 모듈
156-
157-
일반적인 실수는 모듈 파일을 참조하기 위해 `import`문 대신 `/// <reference ... />` 구문을 사용하는 것입니다.
158-
이 둘의 차이를 이해하기 위해, 우선 `import` 경로에 위치한 모듈에 대한 타입 정보를 컴파일러가 어떻게 찾아내는지를 이해해야 합니다. (예를 들어, `import x from "...";`, `import x = require("...");` 등 안의 `...`)
159-
160-
컴파일러는 `.ts`, `.tsx`를 찾은 다음 적절한 경로에 위치한 `.d.ts`를 찾습니다.
161-
만약 특정 파일을 찾지 못한다면, 컴파일러는 *앰비언트 모듈(ambient module) 선언*을 탐색할 것입니다.
162-
`.d.ts` 파일안에 이것들을 선언해야 한다는 점을 기억하세요.
163-
164-
* `myModules.d.ts`
165-
166-
```ts
167-
// 모듈이 아닌 .d.ts 파일 또는 .ts 파일:
168-
declare module "SomeModule" {
169-
export function fn(): string;
170-
}
171-
```
172-
173-
* `myOtherModule.ts`
174-
175-
```ts
176-
/// <reference path="myModules.d.ts" />
177-
import * as m from "SomeModule";
178-
```
179-
180-
위의 reference 태그는 앰비언트 모듈(ambient module) 선언이 포함된 선언 파일의 위치를 지정하는 데 필요합니다.
181-
이 방법은 여러 TypeScript 샘플에서 사용하는 `node.d.ts`파일을 사용하는 방법입니다.
182-
183-
## 불필요한 네임스페이스 (Needless Namespacing)
184-
185-
네임스페이스를 사용하던 프로그램을 모듈로 변경하면, 파일은 다음과 같은 모습이 되기 쉽습니다:
186-
187-
* `shapes.ts`
188-
189-
```ts
190-
export namespace Shapes {
191-
export class Triangle { /* ... */ }
192-
export class Square { /* ... */ }
193-
}
194-
```
195-
196-
최상위 모듈 `Shapes`는 아무런 의미 없이 `Triangle``Square`을 감싸고 있습니다.
197-
이런 점은 모듈 사용자에게 혼동과 짜증을 유발합니다:
198-
199-
* `shapeConsumer.ts`
200-
201-
```ts
202-
import * as shapes from "./shapes";
203-
let t = new shapes.Shapes.Triangle(); // shapes.Shapes?
204-
```
205-
206-
TypeScript 모듈의 중요한 특징 중 하나는 서로 다른 두 개의 모듈이 절대 같은 스코프 안에 이름을 제공하지 않는다는 점입니다.
207-
모듈 사용자가 어떤 이름을 할당할지를 결정하기 때문에, 네임스페이스 내부에서 내보내는 심벌을 미리 감싸줄 필요가 없습니다.
208-
209-
모듈 내용의 네임스페이스를 설정하지 않아도 되는 이유를 다시 말하면, 네임스페이스를 지정하는 일반적인 목적은 구조의 논리적 그룹을 제공하고 이름 충돌을 방지하기 위함입니다.
210-
모듈 파일이 이미 스스로 논리적 그룹을 형성하고 있기 때문에, 최상위 이름은 이를 가져오는 코드에 의해 정의되고, 내보내는 객체를 위한 추가적인 모듈 계층을 사용할 필요가 없습니다.
211-
212-
다음은 수정된 예입니다:
213-
214-
* `shapes.ts`
215-
216-
```ts
217-
export class Triangle { /* ... */ }
218-
export class Square { /* ... */ }
219-
```
220-
221-
* `shapeConsumer.ts`
222-
223-
```ts
224-
import * as shapes from "./shapes";
225-
let t = new shapes.Triangle();
226-
```
227-
228-
## 모듈의 트레이드-오프 (Trade-offs of Modules)
229-
230118
JS 파일과 모듈이 일대일 대응인 것처럼, TypeScript는 모듈 소스 파일과 이 파일에서 생성된 JS 파일도 일대일 대응입니다.
231119
이러한 특성 때문에 어떤 모듈 시스템을 사용하느냐에 따라서 여러 모듈 소스 파일을 합치는 작업이 불가능할 수 있습니다.
232120
예를 들어, `commonjs` 또는 `umd`를 대상으로 하는 동안에는 `outFile` 옵션을 사용할 수 없지만, TypeScript 1.8 이후부터, `amd` 또는 `system`를 대상으로 하는 경우에는 `outFile` 옵션을 [사용할 수 있게 되었습니다](./release%20notes/TypeScript%201.8.md#concatenate-amd-and-system-modules-with---outfile).

0 commit comments

Comments
 (0)