default-param-last
Enforce default parameters to be last.
This rule extends the base eslint/default-param-last rule.
It adds support for optional parameters.
- ❌ Incorrect
- ✅ Correct
function f(a = 0, b: number) {}
function f(a: number, b = 0, c: number) {}
function f(a: number, b?: number, c: number) {}
class Foo {
  constructor(
    public a = 10,
    private b: number,
  ) {}
}
class Foo {
  constructor(
    public a?: number,
    private b: number,
  ) {}
}
function f(a = 0) {}
function f(a: number, b = 0) {}
function f(a: number, b?: number) {}
function f(a: number, b?: number, c = 0) {}
function f(a: number, b = 0, c?: number) {}
class Foo {
  constructor(
    public a,
    private b = 0,
  ) {}
}
class Foo {
  constructor(
    public a,
    private b?: number,
  ) {}
}
Options
See eslint/default-param-last's options.
How to Use
- Flat Config
- Legacy Config
eslint.config.mjs
export default tseslint.config({
  rules: {
    // Note: you must disable the base rule as it can report incorrect errors
    "default-param-last": "off",
    "@typescript-eslint/default-param-last": "error"
  }
});
.eslintrc.cjs
module.exports = {
  "rules": {
    // Note: you must disable the base rule as it can report incorrect errors
    "default-param-last": "off",
    "@typescript-eslint/default-param-last": "error"
  }
};
Try this rule in the playground ↗