Skip to content

Commit ea0828b

Browse files
Merge pull request #192 from jaryapp/ts-4.9-ko-in
Co-authored-by: bumkeyy <bumkeyy@users.noreply.github.com>
2 parents 0a62f80 + 9a22d13 commit ea0828b

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed

docs/documentation/ko/release-notes/TypeScript 4.9.md

+34-34
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ const greenNormalized = palette.green.toUpperCase();
106106
더 많은 예시를 보고 싶다면, [제안한 이슈](https://github.com/microsoft/TypeScript/issues/47920)[이를 구현한 pull request](https://github.com/microsoft/TypeScript/pull/46827)를 확인하세요.
107107
우리와 함께 이 기능을 구현한 [Oleksandr Tarasiuk](https://github.com/a-tarasyuk)에게 감사드립니다.
108108

109-
## Unlisted Property Narrowing with the `in` Operator
109+
## "in" 연산자를 사용하여 정의되지 않은 프로퍼티로 타입 좁히기
110110

111-
As developers, we often need to deal with values that aren't fully known at runtime.
112-
In fact, we often don't know if properties exist, whether we're getting a response from a server or reading a configuration file.
113-
JavaScript's `in` operator can check whether a property
114-
exists on an object.
111+
개발자들은 자주 런타임에서 알 수 없는 값을 처리해야 할 때가 있습니다.
112+
서버에서 응답받거나 설정 파일을 읽는 경우처럼 실제로 프로퍼티가 존재하는지 알 수 없는 경우가 흔하게 있습니다.
113+
JavaScript의 `in` 연산자를 사용하면
114+
객체에 프로퍼티가 존재하는지 알 수 있습니다.
115115

116-
Previously, TypeScript allowed us to narrow away any types that don't explicitly list a property.
116+
이전 TypeScript 버전에서는 명시적으로 프로퍼티가 타입 목록에 없다면 범위를 좁힐 수 있었습니다.
117117

118118
```ts
119119
interface RGB {
@@ -130,24 +130,24 @@ interface HSV {
130130

131131
function setColor(color: RGB | HSV) {
132132
if ("hue" in color) {
133-
// 'color' now has the type HSV
133+
// 이제 'color'의 타입은 HSV 입니다.
134134
}
135135
// ...
136136
}
137137
```
138138

139-
Here, the type `RGB` didn't list the `hue` and got narrowed away, and leaving us with the type `HSV`.
139+
여기서, `RGB` 타입에 정의되지 않은 `hue`에 의해 타입이 좁혀지게 되어, `HSV` 타입이 되었습니다.
140140

141-
But what about examples where no type listed a given property?
142-
In those cases, the language didn't help us much.
143-
Let's take the following example in JavaScript:
141+
그러나 프로퍼티가 주어진 타입이 없는 경우에는 어떨까요?
142+
그런 경우, 언어는 큰 도움이 되지 않습니다.
143+
여기 JavaScript로 된 예시를 살펴보겠습니다.
144144

145145
```js
146146
function tryGetPackageName(context) {
147147
const packageJSON = context.packageJSON;
148-
// Check to see if we have an object.
148+
// 객체 여부를 확인합니다.
149149
if (packageJSON && typeof packageJSON === "object") {
150-
// Check to see if it has a string name property.
150+
// 문자열 타입의 name 프로퍼티를 가지고 있는지 확인합니다.
151151
if ("name" in packageJSON && typeof packageJSON.name === "string") {
152152
return packageJSON.name;
153153
}
@@ -157,8 +157,8 @@ function tryGetPackageName(context) {
157157
}
158158
```
159159

160-
Rewriting this to canonical TypeScript would just be a matter of defining and using a type for `context`;
161-
however, picking a safe type like `unknown` for the `packageJSON` property would cause issues in older versions of TypeScript.
160+
이것을 표준 TypeScript로 다시 작성한다면 `context` 타입을 정의해서 사용할 수 있습니다.
161+
하지만 `packageJSON`의 프로퍼티에 `unknown`과 같은 안전한 타입을 사용하면 이전 TypeScript 버전에서 문제가 발생할 수 있습니다.
162162

163163
```ts
164164
interface Context {
@@ -167,9 +167,9 @@ interface Context {
167167

168168
function tryGetPackageName(context: Context) {
169169
const packageJSON = context.packageJSON;
170-
// Check to see if we have an object.
170+
// 객체 여부를 확인합니다.
171171
if (packageJSON && typeof packageJSON === "object") {
172-
// Check to see if it has a string name property.
172+
// 문자열 타입의 name 프로퍼티를 가지고 있는지 확인합니다.
173173
if ("name" in packageJSON && typeof packageJSON.name === "string") {
174174
// ~~~~
175175
// error! Property 'name' does not exist on type 'object.
@@ -183,14 +183,14 @@ function tryGetPackageName(context: Context) {
183183
}
184184
```
185185

186-
This is because while the type of `packageJSON` was narrowed from `unknown` to `object`, the `in` operator strictly narrowed to types that actually defined the property being checked.
187-
As a result, the type of `packageJSON` remained `object`.
186+
`packageJSON`의 타입이 `unknown`에서 `object`로 좁혀졌지만, `in` 연산자는 실제 정의한 타입으로 엄격하게 좁혔기 때문입니다.
187+
결과적으로 `packageJSON`의 타입은 `object`가 되었습니다.
188188

189-
TypeScript 4.9 makes the `in` operator a little bit more powerful when narrowing types that *don't* list the property at all.
190-
Instead of leaving them as-is, the language will intersect their types with `Record<"property-key-being-checked", unknown>`.
189+
TypeScript 4.9는 프로퍼티가 전혀 정의되지 _않은_ 타입으로 좁힐 때, `in` 연산자를 사용하여 조금 더 강력하게 만듭니다.
190+
이전과 차이는 없지만, 언어 내부적으로 `Record<"property-key-being-checked", unknown>` 타입을 교차합니다.
191191

192-
So in our example, `packageJSON` will have its type narrowed from `unknown` to `object` to `object & Record<"name", unknown>`
193-
That allows us to access `packageJSON.name` directly and narrow that independently.
192+
따라서 위 예시에서, `packageJSON` 타입은 `unknown`에서 `object`로 그다음 `object & Record<"name", unknown>`로 타입이 좁혀집니다.
193+
이를 통해 `packageJSON.name`에 직접 접근이 가능해지고 독립적으로 좁혀집니다.
194194

195195
```ts
196196
interface Context {
@@ -199,11 +199,11 @@ interface Context {
199199

200200
function tryGetPackageName(context: Context): string | undefined {
201201
const packageJSON = context.packageJSON;
202-
// Check to see if we have an object.
202+
// 객체 여부를 확인합니다.
203203
if (packageJSON && typeof packageJSON === "object") {
204-
// Check to see if it has a string name property.
204+
// 문자열 타입의 name 프로퍼티를 가지고 있는지 확인합니다.
205205
if ("name" in packageJSON && typeof packageJSON.name === "string") {
206-
// Just works!
206+
// 정상 동작합니다!
207207
return packageJSON.name;
208208
}
209209
}
@@ -212,15 +212,15 @@ function tryGetPackageName(context: Context): string | undefined {
212212
}
213213
```
214214

215-
TypeScript 4.9 also tightens up a few checks around how `in` is used, ensuring that the left side is assignable to the type `string | number | symbol`, and the right side is assignable to `object`.
216-
This helps check that we're using valid property keys, and not accidentally checking primitives.
215+
또한 TypeScript 4.9는`in`의 사용성에서 확인하는 부분을 강화하여 왼쪽에는 `string | number | symbol`, 오른쪽에는 `object`로만 할당할 수 있도록 보장합니다.
216+
이를 이용해서 프로퍼티 키가 유효한지, 실수로 프리미티브 검증을 놓쳤는지 확인할 수 있습니다.
217217

218-
For more information, [read the implementing pull request](https://github.com/microsoft/TypeScript/pull/50666)
218+
더 많은 정보를 얻고 싶다면, [이를 구현한 pull request를 읽어보세요](https://github.com/microsoft/TypeScript/pull/50666)
219219

220-
## <a name="auto-accessors-in-classes"> Auto-Accessors in Classes
220+
## <a name="auto-accessors-in-classes"> 클래스의 자동 접근자
221221

222-
TypeScript 4.9 supports an upcoming feature in ECMAScript called auto-accessors.
223-
Auto-accessors are declared just like properties on classes, except that they're declared with the `accessor` keyword.
222+
TypeScript 4.9는 자동 접근자라고 하는 ECMAScript의 향후 기능을 지원합니다.
223+
자동 접근자는 `accessor` 키워드로 선언된다는 점을 제외하면 클래스의 속성처럼 선언됩니다.
224224

225225
```ts
226226
class Person {
@@ -232,7 +232,7 @@ class Person {
232232
}
233233
```
234234

235-
Under the covers, these auto-accessors "de-sugar" to a `get` and `set` accessor with an unreachable private property.
235+
내부적으로 이러한 자동 접근자는 도달할 수 없는 private 프로퍼티의 `get` `set` 접근자로 "de-sugar"됩니다.
236236

237237
```ts
238238
class Person {
@@ -251,7 +251,7 @@ class Person {
251251
}
252252
```
253253

254-
You can [read up more about the auto-accessors pull request on the original PR](https://github.com/microsoft/TypeScript/pull/49705).
254+
[자세한 내용은 자동 접근자에 대한 원본 pull request](https://github.com/microsoft/TypeScript/pull/49705)에서 확인할 수 있습니다.
255255

256256
## `NaN` 동등성 검사
257257

0 commit comments

Comments
 (0)