配列の中身がいくつあるかを調べたいので、length を使った関数を作ります。

function errorMessage<T>(message: T) {
  let messageText = ""
  if (message.length === 0) {
    messageText = "一つもありません。"
  } else if (message.length > 0) {
    messageText = message.length + "つあります。"
  }
  return [message, messageText]
}

すると、

image2

エラーが発生し、『プロパティ 'length' は型 'T' に存在しません。』と指摘されました。

こちらを解消するには、拡張機能でlengthを型指定します。

type Length = {
  length: number
}

function errorMessage<T extends Length>(message: T) {
  let messageText = ""
  if (message.length === 0) {
    messageText = "一つもありません。"
  } else if (message.length > 0) {
    messageText = message.length + "つあります。"
  }
  return [message, messageText]
}

image3

エラーがなくなりました。

console.logで確認すると、

image4

配列の中身と『3 つあります。』が出てきました。

ブログ一覧