Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Korean] Fix weird expressions like '_제네릭_' #171

Merged
merged 2 commits into from
Oct 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 24 additions & 24 deletions docs/documentation/ko/declaration-files/By Example.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ oneline: "How to create a d.ts file for a module"

## 프로퍼티를 갖는 객체 (Objects with Properties)

_문서_
*문서*

> 전역 변수 `myLib`에는 인사말을 만드는 함수 `makeGreeting`와,
> 지금까지 생성한 인사말의 수를 가리키는 `numberOfGreetings` 프로퍼티가 있습니다.

_코드_
*코드*

```ts
let result = myLib.makeGreeting("hello, world");
Expand All @@ -40,7 +40,7 @@ console.log("The computed greeting is:" + result);
let count = myLib.numberOfGreetings;
```

_선언_
*선언*

점 표기법으로 접근하는 타입이나 값을 설명하기 위해 `declare namespace`를 사용하세요.

Expand All @@ -53,19 +53,19 @@ declare namespace myLib {

## 오버로드된 함수 (Overloaded Functions)

_문서_
*문서*

`getWidget` 함수는 숫자를 인자로 받아 Widget을 반환하거나, 문자열을 인자로 받아 Widget 배열을 반환합니다.

_코드_
*코드*

```ts
let x: Widget = getWidget(43);

let arr: Widget[] = getWidget("all of them");
```

_선언_
*선언*

```ts
declare function getWidget(n: number): Widget;
Expand All @@ -74,7 +74,7 @@ declare function getWidget(s: string): Widget[];

## 재사용 가능한 타입 (인터페이스) (Reusable Types (Interfaces))

_문서_
*문서*

> greeting을 명시할 때, 반드시 `GreetingSettings` 객체를 전달해야 합니다.
> 이 객체는 다음의 프로퍼티를 갖고 있습니다:
Expand All @@ -85,7 +85,7 @@ _문서_
>
> 3 - color: 선택적 문자열, 예. '#ff00ff'

_코드_
*코드*

```ts
greet({
Expand All @@ -94,7 +94,7 @@ greet({
});
```

_선언_
*선언*

프로퍼티를 갖는 타입을 정의하기 위해 `interface`를 사용하세요.

Expand All @@ -110,11 +110,11 @@ declare function greet(setting: GreetingSettings): void;

## 재사용 가능한 타입 (타입 별칭) (Reusable Types (Type Aliases))

_문서_
*문서*

> 인사말이 예상되는 어느 곳에나, `string`, `string`을 반환하는 함수, 또는 `Greeter` 인스턴스를 전달할 수 있습니다.

_코드_
*코드*

```ts
function getGreeting() {
Expand All @@ -127,7 +127,7 @@ greet(getGreeting);
greet(new MyGreeter());
```

_선언_
*선언*

타입에 대한 약칭으로 타입 별칭을 사용할 수 있습니다:

Expand All @@ -139,20 +139,20 @@ declare function greet(g: GreetingLike): void;

## 타입 구조화하기 (Organizing Types)

_문서_
*문서*

> `greeter` 객체는 파일에 로그를 작성하거나 경고 창을 띄울 수 있습니다.
> 로그 옵션을 `.log(...)` 내부에, 경고 창 옵션을 `.alert(...)` 내부에 전달할 수 있습니다.

_코드_
*코드*

```ts
const g = new Greeter("Hello");
g.log({ verbose: true });
g.alert({ modal: false, title: "Current Greeting" });
```

_선언_
*선언*

타입을 구조화하기 위해 네임스페이스를 사용하세요.

Expand Down Expand Up @@ -187,11 +187,11 @@ declare namespace GreetingLib.Options {

## 클래스 (Classes)

_문서_
*문서*

> `Greeter` 객체를 인스턴스화해서 greeter를 생성하거나, 이 객체를 상속해서 커스텀 greeter를 생성할 수 있습니다.

_코드_
*코드*

```ts
const myGreeter = new Greeter("hello, world");
Expand All @@ -205,7 +205,7 @@ class SpecialGreeter extends Greeter {
}
```

_선언_
*선언*

클래스 혹은 클래스-같은 객체를 설명하기 위해 `declare class`를 사용하세요.
클래스는 생성자 뿐만 아니라 프로퍼티와 메서드를 가질 수 있습니다.
Expand All @@ -221,17 +221,17 @@ declare class Greeter {

## 전역 변수 (Global Variables)

_문서_
*문서*

> 전역 변수 `foo`는 존재하는 위젯의 수를 포함합니다.

_코드_
*코드*

```ts
console.log("Half the number of widgets is " + (foo / 2));
```

_선언_
*선언*

변수를 선언하기 위해 `declare var`를 사용하세요.
만약 변수가 읽기-전용이라면, `declare const`를 사용하세요.
Expand All @@ -244,17 +244,17 @@ declare var foo: number;

## 전역 함수 (Global Functions)

_문서_
*문서*

> 사용자에게 인사말을 보여주기 위해 `greet` 함수를 호출할 수 있습니다.

_코드_
*코드*

```ts
greet("hello, world");
```

_선언_
*선언*

함수를 선언하기 위해 `declare function`을 사용하세요.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ type Size = [number, number];
let x: Size = [101.1, 999.9];
```

`newtype`과 가장 유사한 것은 _태그된 교차 타입(tagged intersection)_ 입니다:
`newtype`과 가장 유사한 것은 *태그된 교차 타입(tagged intersection)* 입니다:

```ts
type FString = string & { __compileTimeOnly: any };
Expand Down Expand Up @@ -462,7 +462,7 @@ TypeScript는 일반적으로 인자 타입에 기반하여 호출로부터 타
왜냐하면 TypeScript는 구조적이기 때문에, 이름 기반의 시스템만큼 타입 매개 변수를 필요로
하지 않습니다. 특히 함수를 다형성으로 만들
필요는 없습니다. 타입 매개변수는 매개변수를 같은 타입으로
제한하는 것처럼 타입 정보를 _전파하는데만_
제한하는 것처럼 타입 정보를 *전파하는데만*
쓰여야 합니다:

```ts
Expand Down Expand Up @@ -534,7 +534,7 @@ function g() { }
## `readonly` 와 `const` (`readonly` and `const`)

JavaScript에서, 수정 가능함이 기본이지만,
_참조_가 수정 불가능함을 선언하기 위해 `const`로 변수를 선언할 수 있습니다.
*참조*가 수정 불가능함을 선언하기 위해 `const`로 변수를 선언할 수 있습니다.
참조 대상은 여전히 수정 가능합니다:

```js
Expand Down
4 changes: 2 additions & 2 deletions docs/documentation/ko/get-started/TS for JS Programmers.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ JavaScript에서 사용할 수 있는 적은 종류의 원시 타입이 이미
type MyBool = true | false;
```

_참고:_ `MyBool`위에 마우스를 올린다면, `boolean`으로 분류된 것을 볼 수 있습니다 - 구조적 타입 시스템의 프로퍼티며, 나중에 살펴보겠습니다.
*참고:* `MyBool`위에 마우스를 올린다면, `boolean`으로 분류된 것을 볼 수 있습니다 - 구조적 타입 시스템의 프로퍼티며, 나중에 살펴보겠습니다.

유니언 타입이 가장 많이 사용된 사례 중 하나는 값이 다음과 같이 허용되는 `string` 또는 `number`의 [리터럴](/docs/handbook/literal-types.html)집합을 설명하는 것입니다:

Expand Down Expand Up @@ -214,7 +214,7 @@ backpack.add(23);

## 구조적 타입 시스템 (Structural Type System)

TypeScript의 핵심 원칙 중 하나는 타입 검사가 값이 있는 _형태_에 집중한다는 것입니다.
TypeScript의 핵심 원칙 중 하나는 타입 검사가 값이 있는 *형태*에 집중한다는 것입니다.
이는 때때로 "덕 타이핑(duck typing)" 또는 "구조적 타이핑" 이라고 불립니다.

구조적 타입 시스템에서 두 객체가 같은 형태를 가지면 같은 것으로 간주됩니다.
Expand Down
28 changes: 14 additions & 14 deletions docs/documentation/ko/get-started/TS for OOPers.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ TypeScript는 이러한 개발자에게 친숙한 기능을 많이 제공하지
만약 JavaScript에 이미 익숙하지만 주로 Java또는 C#을 사용하는 프로그래머라면, 이 소개 페이지는 흔히 접할 수 있는 오해와 함정에 대한 설명에 도움을 줄 수 있습니다.
TypeScript 모델이 유형화하는 방법 중 일부는 Java나 C#과 상당히 다르며, TypeScript를 학습하는 데에 있어 이 부분을 염두에 두는 것이 중요합니다.

만약 JavaScript를 처음 접하는 Java나 C# 프로그래머라면, JavaScript의 런타임 동작을 이해하기 위해 우선적으로 타입을 _제외한_ JavaScript의 일부분을 배우는 것이 좋습니다.
TypeScript는 코드를 _실행하는_ 방식을 바꾸지 않기 때문에, 실제로 무언가 동작하는 코드를 작성하기 위해서는 여전히 JavaScript가 어떻게 작동하는지 배워야 합니다!
만약 JavaScript를 처음 접하는 Java나 C# 프로그래머라면, JavaScript의 런타임 동작을 이해하기 위해 우선적으로 타입을 *제외한* JavaScript의 일부분을 배우는 것이 좋습니다.
TypeScript는 코드를 *실행하는* 방식을 바꾸지 않기 때문에, 실제로 무언가 동작하는 코드를 작성하기 위해서는 여전히 JavaScript가 어떻게 작동하는지 배워야 합니다!

TypeScript가 JavaScript와 동일한 *런타임*을 사용하므로, 특정한 런타임 동작(문자열을 숫자로 변환하기, 경고 표시, 디스크에 파일 쓰기 등)을 구현하려는 리소스는 항상 TypeScript 프로그램에 똑같이 잘 적용된다는 점을 기억하는 것은 매우 중요합니다.
TypeScript에 특정된 리소스에만 제한을 두지 마십시오!

## 클래스 다시 생각하기 (Rethinking the Class)

C#과 Java는 _의무적 OOP_ 언어라고 부릅니다.
이러한 언어에서 *클래스*는 코드 구성의 기본 단위일 뿐만 아니라 런타임 시 모든 데이터 _그리고_ 동작의 기본적인 컨테이너입니다.
C#과 Java는 *의무적 OOP* 언어라고 부릅니다.
이러한 언어에서 *클래스*는 코드 구성의 기본 단위일 뿐만 아니라 런타임 시 모든 데이터 *그리고* 동작의 기본적인 컨테이너입니다.
기능과 데이터를 전부 클래스에 담도록 강제하는 것은 일부 문제에 대해선 좋은 도메인 모델이 될 수 있지만, 모든 도메인이 이러한 방식으로 표현될 *필요*는 없습니다.

### 자유로운 함수와 데이터 (Free Functions and Data)
Expand Down Expand Up @@ -66,7 +66,7 @@ C#과 Java에서 주어진 값과 객체는 ‘null’, 원시 타입, 또는
C# 또는 Java에서 런타임 타입과 해당 컴파일 타임 선언 사이의 일대일 대응관계는 중요합니다.

TypeScript에서 타입은 공통의 무언가를 공유하는 *값의 집합*으로 생각하는 것이 좋습니다.
타입은 집합에 불과하기 때문에, 특정한 값은 동시에 _수많은_ 집합에 속할 수 있습니다.
타입은 집합에 불과하기 때문에, 특정한 값은 동시에 *수많은* 집합에 속할 수 있습니다.

일단 타입을 집합으로 생각하기 시작하면, 특정 연산이 매우 자연스러워집니다.
예를 들어, C#에서는 ‘string’과 ‘int’ *둘 다 가능한* 타입이 존재하지 않기 때문에 이 값을 인자로 전달하는 것은 이상합니다.
Expand All @@ -79,7 +79,7 @@ TypeScript는 집합론에 의거해 타입을 이용하는 여러 방법을 제

### 삭제된 구조적 타입 (Erased Structural Types)

TypeScript에서, 객체는 정확히 단일 타입이 _아닙니다_.
TypeScript에서, 객체는 정확히 단일 타입이 *아닙니다*.
예를 들어 인터페이스를 만족하는 객체를 생성할 때, 둘 사이의 선언적인 관계가 없더라도 해당 인터페이스가 예상되는 곳에 해당 객체를 사용할 수 있습니다.

```
Expand Down Expand Up @@ -109,21 +109,21 @@ printPoint(obj);
printName(obj);
```

TypeScript의 타입 시스템은 명목이 아닌 _구조적_입니다: `obj`는 숫자인 `x`와 `y` 프로퍼티를 가지고 있으므로, `Pointlike`로써 사용될 수 있습니다.
TypeScript의 타입 시스템은 명목이 아닌 *구조적*입니다: `obj`는 숫자인 `x`와 `y` 프로퍼티를 가지고 있으므로, `Pointlike`로써 사용될 수 있습니다.
타입 간의 관계는 특정 관계로 선언되었는지가 아닌, 포함된 프로퍼티에 의해 결정됩니다.

TypeScript의 타입 시스템은 또한 _구체화되지 않았습니다_: 런타임에 `obj`가 `Pointlike`임을 알려주지 않습니다.
사실, `Pointlike` 타입은 런타임에 _어떤 형태로도_ 존재하지 않습니다.
TypeScript의 타입 시스템은 또한 *구체화되지 않았습니다*: 런타임에 `obj`가 `Pointlike`임을 알려주지 않습니다.
사실, `Pointlike` 타입은 런타임에 *어떤 형태로도* 존재하지 않습니다.

_집합으로서의 타입_ 개념으로 보면, `obj`를 `Pointlike` 값 집합이나 `Named` 값 집합의 멤버로 간주할 수 있습니다.
*집합으로서의 타입* 개념으로 보면, `obj`를 `Pointlike` 값 집합이나 `Named` 값 집합의 멤버로 간주할 수 있습니다.

### 구조적 타입화의 결과 (Consequences of Structural Typing)

객체지향 프로그래머는 종종 구조적 타입화의 두 가지 측면에 놀라곤 합니다.

#### 빈 타입 (Empty Types)

첫 번째로 _빈 타입_은 예상을 무시하는 것처럼 보입니다:
첫 번째로 *빈 타입*은 예상을 무시하는 것처럼 보입니다:

```
class Empty {}
Expand All @@ -138,11 +138,11 @@ fn({ k: 10 });

TypeScript는 주어진 인수가 유효한 `Empty`인지 확인하여 `fn`의 호출이 유효한지를 검사합니다
`{ k: 10 }`과 `class Empty { }`의 _구조를 확인하여 유효성을 검사합니다.
`Empty`에 프로퍼티가 없으므로 `Empty`가 수행하는 _모든_ 프로퍼티가 `{ k: 10 }`에 속해있습니다.
`Empty`에 프로퍼티가 없으므로 `Empty`가 수행하는 *모든* 프로퍼티가 `{ k: 10 }`에 속해있습니다.
그러므로, 유효한 호출입니다:

놀랍지만, 최종적으로 명목적인 객체지향프로그래밍 언어와 매우 비슷하게 사용됩니다.
파생 클래스와 파생 클래스의 기본 사이의 자연스러운 하위 타입 관계가 파괴되기 때문에, 하위 클래스는 _삭제_할 수 없습니다.
파생 클래스와 파생 클래스의 기본 사이의 자연스러운 하위 타입 관계가 파괴되기 때문에, 하위 클래스는 *삭제*할 수 없습니다.
구조적 타입 시스템은 호환 가능한 유형의 속성을 갖는 측면에서 하위 타입을 설명하므로 위의 관계를 암시적으로 구별합니다

#### 동일한 타입 (Identical Types)
Expand All @@ -165,7 +165,7 @@ class Golfer {
let w: Car = new Golfer();
```

다시 말하지만, 오류가 아닌 이유는 클래스의 _구조_가 동일하기 때문입니다.
다시 말하지만, 오류가 아닌 이유는 클래스의 *구조*가 동일하기 때문입니다.
잠재적인 혼란의 이유가 될 수도 있겠지만, 사실 상관없는 클래스가 동일한 경우는 일반적이지 않습니다.

차후에 클래스 챕터에서 클래스가 서로 어떻게 관련되는지에 대해 자세히 알아볼 것입니다.
Expand Down
Loading