何がしたい
- [1, 8, 9] しか入らない配列の型を作りたい
- 1, 8, 9 全てが入る場合もある
- 1 だけ入る場合もある
- 8, 9 の2つが入る場合もある
- [9, 1, 8] のように順番が並び変わるケースもある
const NumArray = [1, 8, 9] // 全部入る場合
const NumArray = [1] // 1つだけ入る場合
const NumArray = [8, 9] // 2つだけ入る場合
const NumArray = [9, 1, 8] // 順番が並び変わるケースもある
結論
type SpecificNumber = (1 | 8 | 9)[];
const NumArray:SpecificNumber = [1] // 1つだけ入る場合
const NumArray:SpecificNumber = [8, 9] // 2つだけ入る場合
const NumArray:SpecificNumber = [9, 1, 8] // 順番が並び変わるケースもある
参考
ちゃんとサバイバルTypescriptに書いてあった、、、
しかも「よくある間違い」にもしっかり引っかかってしまった、、
配列要素にユニオン型を使う際の書き方