回答編集履歴
2
テキスト修正
answer
CHANGED
@@ -30,8 +30,7 @@
|
|
30
30
|
|
31
31
|
### 備考
|
32
32
|
|
33
|
-
私の手元の確認ですと、
|
33
|
+
私の手元の確認ですと、TSのバージョン `^4.0.2` を使用して、
|
34
|
-
|
35
34
|
```typescript
|
36
35
|
type T2 = [...string[], number]
|
37
36
|
```
|
1
テキスト修正
answer
CHANGED
@@ -26,4 +26,23 @@
|
|
26
26
|
> この“吸収”という動作はPRの説明にも記載されており、バグではなく仕様通りの動作です。意図と異なる結果となるため戸惑う方が多そうですが、前述のようにTypeScriptではタプル型の最後以外の位置での可変長要素を(少なくとも今の段階では)サポートしませんから、やむを得ない挙動であると考えられます。
|
27
27
|
|
28
28
|
|
29
|
-
参考になれば幸いです。
|
29
|
+
参考になれば幸いです。
|
30
|
+
|
31
|
+
### 備考
|
32
|
+
|
33
|
+
私の手元の確認ですと、
|
34
|
+
|
35
|
+
```typescript
|
36
|
+
type T2 = [...string[], number]
|
37
|
+
```
|
38
|
+
と書くと、ご質問と同じように、この行で、`TS1256: A rest element must be last in a tuple type.` のエラーになりましたが、 `string[]` を別のtypeにして
|
39
|
+
|
40
|
+
```typescript
|
41
|
+
type A = string[]
|
42
|
+
type T2 = [...A, number]
|
43
|
+
```
|
44
|
+
と書いた場合は、エラーになりませんでした。そして、上記のQiitaの投稿にあるとおり、"吸収" によって、`(string | number)[]` となっていることを、
|
45
|
+
```typescript
|
46
|
+
const ary: T2 = [1,'str', 1, 1, 'str', 'str']
|
47
|
+
```
|
48
|
+
がエラーにならないことによって確認できました。
|