Yes、No で答えるコードがあったとします。

let yesNo = ["yes", "no"]

function question(answer: number | boolean) {}

answerが『0』もしくは『ture』の場合『yes』を返し、『1』もしくは『false』の場合『no』を返すようにします。

『0』は number 型であり、『true』は boolean 型であるので、どちらの答えが返ってきてもいいように、条件分けして型を狭めます。

これを、型の絞り込みと言います。

方法は、ifの後にtypeofで条件分けします。

let yesNo = ["yes", "no"]

function question(answer: number | boolean) {
  if (typeof answer === "number") {
    console.log(yesNo[answer])
  } else {
    if (answer) {
      console.log(yesNo[0])
    } else {
      console.log(yesNo[1])
    }
  }
}

question(0);にすると、

image2

『yes』が返ってきました。

question(false);にすると、

image3

『no』が返ってきました。

ブログ一覧