Item 38: Avoid Repeated Parameters of the Same Type

May 10, 2024 ยท View on GitHub

Things to Remember

  • Avoid writing functions that take consecutive parameters with the same TypeScript type.
  • Refactor functions that take many parameters to take fewer parameters with distinct types, or a single object parameter.

Code Samples

drawRect(25, 50, 75, 100, 1);

๐Ÿ’ป playground


function drawRect(x: number, y: number, w: number, h: number, opacity: number) {
  // ...
}

๐Ÿ’ป playground


interface Point {
  x: number;
  y: number;
}
interface Dimension {
  width: number;
  height: number;
}
function drawRect(topLeft: Point, size: Dimension, opacity: number) {
  // ...
}

๐Ÿ’ป playground


drawRect({x: 25, y: 50}, {x: 75, y: 100}, 1.0);
//                        ~
// Argument ... is not assignable to parameter of type 'Dimension'.

๐Ÿ’ป playground


interface DrawRectParams extends Point, Dimension {
  opacity: number;
}
function drawRect(params: DrawRectParams) { /* ... */ }

drawRect({x: 25, y: 50, width: 75, height: 100, opacity: 1.0});

๐Ÿ’ป playground