@@ -36,7 +36,7 @@ type Stuff =
36
36
SomeType extends OtherType ? TrueType : FalseType ;
37
37
```
38
38
39
- ` extends ` 를 기준으로 왼쪽에 있는 타입이 오른쪽 타입에 할당할 수 있다면 첫 번째 분기(참값 분기)를, 그렇지 않다면 뒤의 분기(거짓값 분기)를 얻게 됩니다.
39
+ ` extends ` 를 기준으로 왼쪽에 있는 타입이 오른쪽 타입에 할당할 수 있다면 첫 번째 분기("참"값 분기)를, 그렇지 않다면 뒤의 분기("거짓"값 분기)를 얻게 됩니다.
40
40
41
41
` Dog extends Animal ` 에 따라 ` number ` 나 ` string ` 인지 알려주는 것 말곤, 위의 예제에서 조건부 타입은 그다지 유용해 보이지 않습니다!
42
42
하지만 제네릭과 함께 사용될 때 조건부 타입은 강력한 힘을 갖습니다.
@@ -109,7 +109,7 @@ let c = createLabel(Math.random() ? "hello" : 42);
109
109
### 조건부 타입으로 제한하기
110
110
111
111
종종, 조건부 타입의 검사에서 새로운 정보를 얻을 수 있습니다.
112
- 타입 가드가 더 구체적인 타입으로 좁혀주듯이, 조건부 타입의 참값 분기는 대조하는 타입에 따라서 제네릭을 더 제한할 수 있습니다.
112
+ 타입 가드가 더 구체적인 타입으로 좁혀주듯이, 조건부 타입의 "참"값 분기는 대조하는 타입에 따라서 제네릭을 더 제한할 수 있습니다.
113
113
114
114
다음 예를 살펴보겠습니다.
115
115
@@ -153,7 +153,7 @@ type DogMessageContents = MessageOf<Dog>;
153
153
// ^?
154
154
```
155
155
156
- 참값 분기내에서는 TypeScript는 ` T ` 가 ` message ` 프로퍼티를 가지고 _ 있을 것을_ 알 수 있습니다.
156
+ "참"값 분기내에서는 TypeScript는 ` T ` 가 ` message ` 프로퍼티를 가지고 _ 있을 것을_ 알 수 있습니다.
157
157
158
158
또 다른 예제에서 배열 타입이면 배열의 개별 요소 타입으로 평탄화 시키지만, 배열 타입이 아니면 그대로 유지하는 ` Flatten ` 타입을 만들 수 있습니다.
159
159
@@ -177,14 +177,14 @@ type Num = Flatten<number>;
177
177
위에서 제약 조건을 가진 조건부 타입을 이용해서 타입을 추출할 수 있다는 점을 살펴봤습니다.
178
178
이 부분은 조건부 타입을 더 쉽게 만드는 평범한 작업이 됩니다.
179
179
180
- 조건부 타입은 ` infer ` 키워드를 사용해서 참값 분기에서 비교하는 타입을 추론할 수 있습니다.
180
+ 조건부 타입은 ` infer ` 키워드를 사용해서 "참"값 분기에서 비교하는 타입을 추론할 수 있습니다.
181
181
예를 들어, ` Flatten ` 에서 인덱싱된 접근 타입으로 "직접" 추출하지 않고 요소 타입을 추론할 수 있습니다.
182
182
183
183
``` ts twoslash
184
184
type Flatten <Type > = Type extends Array <infer Item > ? Item : Type ;
185
185
```
186
186
187
- 여기서 참값 분기에서 ` T ` 의 요소 타입을 어떻게 제시할 필요 없이, ` infer ` 키워드를 새 제네릭 타입 변수 ` Item ` 에 선언적으로 사용했습니다.
187
+ 여기 "참"값 분기에서 ` T ` 의 요소 타입을 어떻게 제시할 필요 없이, ` infer ` 키워드를 새 제네릭 타입 변수 ` Item ` 에 선언적으로 사용했습니다.
188
188
이 방식은 관심 있는 타입의 구조를 깊게 분석하지 않아도 되도록 만들어줍니다.
189
189
190
190
` infer ` 키워드를 사용해서 유용한 헬퍼 타입 별칭을 사용할 수 있습니다.
0 commit comments