2022.04.25(更新日: 2024.08.08)
TypeScript 学習 part6
はじめに
こちらの本でTypeScriptの学習を進めています。
前回は、Hit&Blowにバリデーションを追加しました。今回は、その続きです。
コミット履歴はこちら
行ったこと
never型
getAnswerLengthというプライベートメソッドに、never型を追加しました。
private getAnswerLength() {
switch (this.mode) {
case 'normal':
return 3
case 'hard':
return 4
default:
const neverValue: never = this.mode
throw new Error(`${neverValue} は無効なモードです。`)
}
}
型エイリアスの使用
モードをModeに代入することで、繰り返し使用できるようにしました。後で変更する際に、1箇所だけ変更を加えればいいというメリットもあります。
type Mode = 'normal' | 'hard'
class HitAndBlow {
private readonly answerSource = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
private answer: string[] = []
private tryCount = 0
private mode: Mode
constructor(mode: Mode) {
this.mode = mode
}
// 以下省略
}
ユーザーがモードを選択できるようにした
コード
初期値の設定
class HitAndBlow {
private readonly answerSource = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
private answer: string[] = []
private tryCount = 0
private mode: Mode = 'normal'
// 以下省略
}
ユーザーの入力を求める処理
async setting() {
this.mode = await promptInput('モードを入力してください。') as Mode
const answerLength = this.getAnswerLength()
// 以下省略
}
settingメソッドの実行
;(async () => {
const hitAndBlow = new HitAndBlow()
await hitAndBlow.setting()
await hitAndBlow.play()
hitAndBlow.end()
})()
次回
次回は、ユーザーがnormalとhard以外の文字列を入力した場合の対応や、コードのリファクタリングをしていきます。
投稿ID : 2602
コメントを残す