This is named after Ramda's aperture function https://ramdajs.com/docs/#aperture.
const aperture = (n: number) =>
<T>(xs: T[]): T[][] =>
n < 1 || n > xs.length
? []
: Array.from({ length: xs.length - n + 1 }, (_, i) => xs.slice(i, i + n));Example:
const pairs = aperture(2)([0, 1, 2, 3, 4]);
console.log(pairs);
// [[0, 1], [1, 2], [2, 3], [3, 4]]