前提・実現したいこと
TypeScript入門者です。
ブラックジャックゲームをTypeScriptを使って開発しています。
引数として受けとった勝敗の結果と自身のstatusという変数(ブラックジャック、サレンダーなど)をもとに、最終的な所持金額を計算するプログラムを書いています。
TypeScript
1export class Player { 2 public name: string; 3 public hand: Card[] = []; 4 public money: number = 400; 5 public betAmount: number = Table.betDenominations[0]; 6 public status: "Surrender" | "Stand" | "Bust" | "Double" | "Doublebust" | "Blackjack" | "initial" = "initial"; 7 public isTurnEnd: boolean = false; 8 9 ... 10 11 public calculation(result: "win" | "lose"): void { 12 const calMap: {[key: string]: number} = { 13 Surrender: -0.5, 14 Bust: -1, 15 Doublebust: -2, 16 Stand: result === "win" ? 1 : -1, 17 Double: result === "win" ? 2 : -2, 18 Blackjack: 1.5, 19 }; 20 this.money += Math.floor(this.betAmount * calMap[this.status]); 21 } 22}
今は連想配列のキーをstring型でやりすごしていますが、Playerクラスのstatusの型(ユニオンタイプ)をつけたいです。initialは初期状態を表していて、このクラスメソッドが呼ばれるまでには必ずそれ以外のどれかに書き変わっているはずなので省きたいです。
どういう書き方が適切なんでしょうか?
また、こういう高等な型について体系的に学べる公式ハンドブック以外の書籍などがあれば教えていただきたいです...
発生している問題・エラーメッセージ
補足情報(FW/ツールのバージョンなど)
TypeScript 4.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/14 13:07