🍑

修正を入れる時はまず型から直す

2021/07/04に公開

概要

タイトルの通り。メソッドに変更があった場合は、実装する前に type を変更しましょうという学びを得ました。
私は毎週アドバイザーの方にペアプロをしていただいているのですが、その時の学びとなります。

例題

const something = (label: string, data: string): string => `${label}: ${data}`

こんな関数があったとする。

ここで valueObject型 になり、返り値も変更することになった。

変更点

  • valueObject をに変更
  • 返り値を Object に変更。

引数となる Object は

{ 
	value: 'hoge'
	date: 'YYYY-MM-DD'
}

とする。

変更手順のよくない例

僕「じゃあまず返り値を変更しよう〜」

const something = (label: string, data: string): string => { label, data.value }

と修正を加えていくのは良くない。まずは型から直した方がうまくいくことが多い。

お手本にしたい例

まずは 型から直そう

引数の型を直すと、

type Data = { value: string; date: string }
const something = (label: string, data: Data): string => `${label}: ${data}`

返り値の型を直すと、

type Data = { value: string; date: string }
const something = (label: string, data: Data): { label: string; value: string } => `${label}: ${data}`

ここまできてやっと返り値を直す。

type Data = { value: string; date: string }
const something = (label: string, data: Data): { label: string; value: string } => ({ label, value: data.value })

まとめ

「テストが仕様書」、「型が仕様書」とか良く耳にする話。それが自然にできるようになりたい。

宣伝

てな感じで、弊社は勉強会、ペアプロといったエンジニアのスキルアップに時間とお金を惜しみません。興味のある方は是非 DM ください🎉

Discussion