```ts
import { strict as assert } from 'assert';

export function billSplit(total: number, diners: number): number[] {
  if (diners === 0) throw new Error('No diners');

  const perDiner = Math.floor(total / diners);
  const remainder = total % diners;

  return Array.from({ length: diners }, (_, i) => i === 0 ? perDiner + remainder : perDiner);
}

// Check function with provided data points
function check() {
  assert.deepStrictEqual(billSplit(10, 3), [4, 4, 2]);
  assert.deepStrictEqual(billSplit(15, 4), [3, 3, 3, 3]);
  assert.deepStrictEqual(billSplit(20, 6), [3, 3, 3, 3, 3, 2]);
}

check();
```