TypeScript ジェネリックを使って定義された関数へ型を渡さないときの型推論

// 関数を定義
function getfirstMember<T>(list: T[]) {
  return list[0]
}

この関数に対して、型をアノテートしないで使用した場合は引数から型推論される

type User = {
  id: number
  age: number
  name: string
}

const users: User[] = [
  {
    id: 1,
    age: 22,
    name: "太郎",
  },
  {
    id: 2,
    age: 41,
    name: "花子",
  },
]

const resultA = getfirstMember(users) // resultAの型は User

const resultB = getfirstMember(["hoge", "fuga"])  // resultBの型は string

const resultC = getfirstMember([undefined, true, false]) // resultCの型は boolean|undefined

const resultD = getfirstMember(true) // エラー

const result = getfirstMember([() => {}, () => {}])  // resultEの型は () => void
No.2391
08/25 15:42

edit