You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/documentation/ko/get-started/TS for OOPers.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,16 +17,16 @@ TypeScript는 이러한 개발자에게 친숙한 기능을 많이 제공하지
17
17
만약 JavaScript에 이미 익숙하지만 주로 Java또는 C#을 사용하는 프로그래머라면, 이 소개 페이지는 흔히 접할 수 있는 오해와 함정에 대한 설명에 도움을 줄 수 있습니다.
18
18
TypeScript 모델이 유형화하는 방법 중 일부는 Java나 C#과 상당히 다르며, TypeScript를 학습하는 데에 있어 이 부분을 염두에 두는 것이 중요합니다.
19
19
20
-
만약 JavaScript를 처음 접하는 Java나 C# 프로그래머라면, JavaScript의 런타임 동작을 이해하기 위해 우선적으로 타입을 _제외한_ JavaScript의 일부분을 배우는 것이 좋습니다.
21
-
TypeScript는 코드를 _실행하는_ 방식을 바꾸지 않기 때문에, 실제로 무언가 동작하는 코드를 작성하기 위해서는 여전히 JavaScript가 어떻게 작동하는지 배워야 합니다!
20
+
만약 JavaScript를 처음 접하는 Java나 C# 프로그래머라면, JavaScript의 런타임 동작을 이해하기 위해 우선적으로 타입을 *제외한* JavaScript의 일부분을 배우는 것이 좋습니다.
21
+
TypeScript는 코드를 *실행하는* 방식을 바꾸지 않기 때문에, 실제로 무언가 동작하는 코드를 작성하기 위해서는 여전히 JavaScript가 어떻게 작동하는지 배워야 합니다!
22
22
23
23
TypeScript가 JavaScript와 동일한 *런타임*을 사용하므로, 특정한 런타임 동작(문자열을 숫자로 변환하기, 경고 표시, 디스크에 파일 쓰기 등)을 구현하려는 리소스는 항상 TypeScript 프로그램에 똑같이 잘 적용된다는 점을 기억하는 것은 매우 중요합니다.
24
24
TypeScript에 특정된 리소스에만 제한을 두지 마십시오!
25
25
26
26
## 클래스 다시 생각하기 (Rethinking the Class)
27
27
28
-
C#과 Java는 _의무적 OOP_ 언어라고 부릅니다.
29
-
이러한 언어에서 *클래스*는 코드 구성의 기본 단위일 뿐만 아니라 런타임 시 모든 데이터 _그리고_ 동작의 기본적인 컨테이너입니다.
28
+
C#과 Java는 *의무적 OOP* 언어라고 부릅니다.
29
+
이러한 언어에서 *클래스*는 코드 구성의 기본 단위일 뿐만 아니라 런타임 시 모든 데이터 *그리고* 동작의 기본적인 컨테이너입니다.
30
30
기능과 데이터를 전부 클래스에 담도록 강제하는 것은 일부 문제에 대해선 좋은 도메인 모델이 될 수 있지만, 모든 도메인이 이러한 방식으로 표현될 *필요*는 없습니다.
31
31
32
32
### 자유로운 함수와 데이터 (Free Functions and Data)
@@ -66,7 +66,7 @@ C#과 Java에서 주어진 값과 객체는 ‘null’, 원시 타입, 또는
66
66
C# 또는 Java에서 런타임 타입과 해당 컴파일 타임 선언 사이의 일대일 대응관계는 중요합니다.
67
67
68
68
TypeScript에서 타입은 공통의 무언가를 공유하는 *값의 집합*으로 생각하는 것이 좋습니다.
69
-
타입은 집합에 불과하기 때문에, 특정한 값은 동시에 _수많은_ 집합에 속할 수 있습니다.
69
+
타입은 집합에 불과하기 때문에, 특정한 값은 동시에 *수많은* 집합에 속할 수 있습니다.
70
70
71
71
일단 타입을 집합으로 생각하기 시작하면, 특정 연산이 매우 자연스러워집니다.
72
72
예를 들어, C#에서는 ‘string’과 ‘int’ *둘 다 가능한* 타입이 존재하지 않기 때문에 이 값을 인자로 전달하는 것은 이상합니다.
@@ -79,7 +79,7 @@ TypeScript는 집합론에 의거해 타입을 이용하는 여러 방법을 제
79
79
80
80
### 삭제된 구조적 타입 (Erased Structural Types)
81
81
82
-
TypeScript에서, 객체는 정확히 단일 타입이 _아닙니다_.
82
+
TypeScript에서, 객체는 정확히 단일 타입이 *아닙니다*.
83
83
예를 들어 인터페이스를 만족하는 객체를 생성할 때, 둘 사이의 선언적인 관계가 없더라도 해당 인터페이스가 예상되는 곳에 해당 객체를 사용할 수 있습니다.
84
84
85
85
```
@@ -109,21 +109,21 @@ printPoint(obj);
109
109
printName(obj);
110
110
```
111
111
112
-
TypeScript의 타입 시스템은 명목이 아닌 _구조적_입니다: `obj`는 숫자인 `x`와 `y` 프로퍼티를 가지고 있으므로, `Pointlike`로써 사용될 수 있습니다.
112
+
TypeScript의 타입 시스템은 명목이 아닌 *구조적*입니다: `obj`는 숫자인 `x`와 `y` 프로퍼티를 가지고 있으므로, `Pointlike`로써 사용될 수 있습니다.
113
113
타입 간의 관계는 특정 관계로 선언되었는지가 아닌, 포함된 프로퍼티에 의해 결정됩니다.
114
114
115
-
TypeScript의 타입 시스템은 또한 _구체화되지 않았습니다_: 런타임에 `obj`가 `Pointlike`임을 알려주지 않습니다.
116
-
사실, `Pointlike` 타입은 런타임에 _어떤 형태로도_ 존재하지 않습니다.
115
+
TypeScript의 타입 시스템은 또한 *구체화되지 않았습니다*: 런타임에 `obj`가 `Pointlike`임을 알려주지 않습니다.
116
+
사실, `Pointlike` 타입은 런타임에 *어떤 형태로도* 존재하지 않습니다.
117
117
118
-
_집합으로서의 타입_ 개념으로 보면, `obj`를 `Pointlike` 값 집합이나 `Named` 값 집합의 멤버로 간주할 수 있습니다.
118
+
*집합으로서의 타입* 개념으로 보면, `obj`를 `Pointlike` 값 집합이나 `Named` 값 집합의 멤버로 간주할 수 있습니다.
119
119
120
120
### 구조적 타입화의 결과 (Consequences of Structural Typing)
121
121
122
122
객체지향 프로그래머는 종종 구조적 타입화의 두 가지 측면에 놀라곤 합니다.
123
123
124
124
#### 빈 타입 (Empty Types)
125
125
126
-
첫 번째로 _빈 타입_은 예상을 무시하는 것처럼 보입니다:
126
+
첫 번째로 *빈 타입*은 예상을 무시하는 것처럼 보입니다:
127
127
128
128
```
129
129
class Empty {}
@@ -138,11 +138,11 @@ fn({ k: 10 });
138
138
139
139
TypeScript는 주어진 인수가 유효한 `Empty`인지 확인하여 `fn`의 호출이 유효한지를 검사합니다
0 commit comments