TypeScript 入門 配列のいずれかの要素を受け取る関数

例えば以下のような配列があり、

[
  {
    label: '100',
    value: 100
  },
  {
    label: '200',
    value: 200
  },
  {
    label: '300',
    value: 300
  }
]

この配列の要素のいずれかを引数に受け取る関数を定義したいとします。

const f1 = (value: V) => {
  //do something
}

Vの型の定義は以下になります。

type Arr = [
  {
    label: '100',
    value: 100
  },
  {
    label: '200',
    value: 200
  },
  {
    label: '300',
    value: 300
  }
]

type V = Arr[number]

これで配列の要素以外を関数に渡した場合はエラーになります。

f1({label: '100',value: 100}) // ok
f1({label: '101',value: 100}) // error
f1({label: '100',value: 200}) // error