項目38 同じ型のパラメーターの繰り返しを避ける
同じ型のパラメータを連続して受け取る関数は、各パラメータの意味を型で表現できないため間違いを引き起こしやすい
code:ts
function drawRect(x: number, y: number, w: number, h: number, opacity: number) {
// ...
}
改善方法
意味のある単位で型を作成する
code:ts
interface Point {x: number; y: number;}
interface Dimension {width: number; height: number;}
function drawRect(topLeft: Point, size: Dimension, opacity: number) {
// ...
}
すべてのパラメータをオブジェクトにまとめる
それぞれのnumber型のプロパティに名前が付くため利用しやすい
code:ts
interface DrawRectParams extends Point, Dimension {
opacity: number;
}
function drawRect(params: DrawRectParams) { /* ... */ }
drawRect({x: 25, y: 50, width: 75, height: 100, opacity: 1.0});
関数が3~4つ以上、パラメータを受け取るようになったらリファクタリングして、パラメータを少なくするようにする
typescript-eslintのmax-paramsルールで強制できる
ただ、例外もある
引数の順番に意味を持たいない場合
max(a, b)など
パラメータに自然な順番がある場合
slice(start, end)など
#TypeScript