さとうです!

今日、SNSでこんなものを見かけました。

https://x.com/yumemiinc/status/1721332498465276003?s=20

このコードをレビューしてみようと思います!

元のコード

const alertPrice = (price: number) => {
	const tax = 0.1;
	const priceWithTax = price + price * tax;
	const message = `税込金額は${priceWithTax}円です。`;
	alert(message);
}

税込金額を計算して画面に表示する、ということをやっていますね!

では、いくつか指摘してみましょう!

基本データ型ではなくValueObjectを使う

まず僕が気になったのは、number型を使っているところです。

const alertPrice = (price: number) => {

TypeScriptのnumber型は大きい値を受け取ることができますが、最大値を受け取ってしまった場合、計算する部分でエラーが発生しそうです。

// number型で定義されている最大値(9007199254740991)を超えてしまう可能性がある。
const priceWithTax = price + price * tax;

このようなことがあるため、基本データ型をそのまま使うのではなく、ValueObjectを受け取るようにしましょう。

// ValueObjectを受け取る
const alertPrice = (price: Price) => {

このValueObjectのコンストラクターで最大値を設定するようにしましょう!

関数の中から値を抽出する

次に気になったのは、taxを宣言している部分です。

	const tax = 0.1;