@@ -5,17 +5,17 @@ permalink: /docs/handbook/release-notes/typescript-4-0.html
5
5
oneline : TypeScript 4.0 Release Notes
6
6
---
7
7
8
- ## 가변 인자 튜플 유형 (Variadic Tuple Types)
8
+ ## 가변 인자 튜플 타입 (Variadic Tuple Types)
9
9
10
- 두 개의 배열 혹은 튜플 타입을 연결하여 새로운 배열을 만드는 JavaScript의 ` concat ` 함수에 대해서 생각해봅시다.
10
+ 배열이나 튜플 타입 두 개를 결합하여 새로운 배열을 만드는 JavaScript의 ` concat ` 함수에 대해서 생각해봅시다.
11
11
12
12
``` js
13
13
function concat (arr1 , arr2 ) {
14
14
return [... arr1, ... arr2];
15
15
}
16
16
```
17
17
18
- 또한 , 배열이나 튜플을 변수로 입력받아 첫 번째 원소를 제외한 모든 원소를 반환해주는 ` tail ` 함수에 대해서도 생각해봅시다.
18
+ 그리고 , 배열이나 튜플을 변수로 입력받아 첫 번째 원소를 제외한 나머지를 반환하는 ` tail ` 함수에 대해서도 생각해봅시다.
19
19
20
20
``` js
21
21
function tail (arg ) {
@@ -38,7 +38,7 @@ function concat<A, B, C, D, E>(arr1: [A, B, C, D, E], arr2: []): [A, B, C, D, E]
38
38
function concat<A , B , C , D , E , F >(arr1 : [A , B , C , D , E , F ], arr2 : []): [A , B , C , D , E , F ];)
39
39
```
40
40
41
- 음... 네, 두 번째의 배열이 항상 비어있는 경우 작성된 7개의 오버로드들입니다 .
41
+ 음... 네, 이 오버로드들의 두 번째 배열은 전부 비어있습니다 .
42
42
이때, ` arr2 ` 가 하나의 인자를 가지고 있는 경우를 추가해봅시다.
43
43
44
44
<!-- prettier-ignore -->
@@ -52,23 +52,23 @@ function concat<A1, B1, C1, D1, E1, A2>(arr1: [A1, B1, C1, D1, E1], arr2: [A2]):
52
52
function concat<A1 , B1 , C1 , D1 , E1 , F1 , A2 >(arr1 : [A1 , B1 , C1 , D1 , E1 , F1 ], arr2 : [A2 ]): [A1 , B1 , C1 , D1 , E1 , F1 , A2 ];
53
53
```
54
54
55
- 이것이 지나치다는 것이 분명해지기를 바랍니다 .
56
- 안타깝게도, ` tail ` 과 같은 함수를 타이핑할 때 이와 같은 비슷한 종류의 문제에 직면하게 될 것입니다 .
55
+ 이런 오버로딩 함수들은 분명 비합리적입니다 .
56
+ 안타깝게도, ` tail ` 함수를 타이핑할 때도 이와 비슷한 문제에 직면하게 됩니다 .
57
57
58
- 이것은 "천 개의 오버로드로 인한 죽음(death by a thousand overloads)"이라고 부르고 싶은 또다른 경우이며, 일반적으로 문제를 해결하지도 않습니다 .
58
+ 이것은 "천 개의 오버로드로 인한 죽음(death by a thousand overloads)"의 하나의 경우이며, 심지어 대부분 문제를 해결하지도 못합니다 .
59
59
우리가 작성하고자하는만큼의 오버로드에 한해서만 올바른 타입을 제공합니다.
60
60
포괄적인 케이스를 만들고 싶다면, 다음과 같은 오버로드가 필요합니다.
61
61
62
62
``` ts
63
63
function concat<T , U >(arr1 : T [], arr2 : U []): Array <T | U >;
64
64
```
65
65
66
- 그러나 해당 시그니처는 튜플을 사용할 때 입력의 길이나 요소의 순서에 대한 어떤 것도 인코딩하지 않습니다.
66
+ 그러나 위 시그니처는 튜플을 사용할 때 입력 길이나 요소 순서에 대한 어떤 것도 처리하지 않습니다.
67
67
68
- TypeScript 4.0은 추론 개선과 함께 두 가지 핵심적인 변화를 가져와 이러한 타이핑을 가능하게 합니다 .
68
+ TypeScript 4.0은 타입 추론 개선을 포함한 두 가지 핵심적인 변화를 도입해 이러한 타이핑을 가능하도록 만들었습니다 .
69
69
70
70
첫 번째 변화는 튜플 타입 구문의 확장 연산자에서 제너릭 타입을 사용할 수 있다는 점입니다.
71
- 이 것은 우리가 작동하는 실제 타입을 모르더라도 튜플과 배열에 대해 고차함수를 표현할 수 있다는 뜻입니다.
71
+ 우리가 작동하는 실제 타입을 모르더라도 튜플과 배열에 대한 고차함수를 표현할 수 있다는 뜻입니다.
72
72
이러한 튜플 타입에서 제너릭 확장 연산자가 인스턴스화(혹은, 실제 타입으로 대체)되면 또다른 배열이나 튜플 타입 세트를 생산할 수 있습니다.
73
73
74
74
예를 들어, ` tail ` 같은 함수를 "천 개의 오버로드로 인한 죽음(death by a thousand overloads)"이슈 없이 타이핑 할 수 있게 됩니다.
0 commit comments