close

prefer-readonly-parameter-types

Configuration

rslint.config.ts
import { defineConfig, ts } from '@rslint/core';

export default defineConfig([
  ts.configs.recommended,
  {
    rules: {
      '@typescript-eslint/prefer-readonly-parameter-types': 'error',
    },
  },
]);

Rule Details

Require function parameters to be typed as readonly to prevent accidental mutation of inputs. Mutating function arguments can lead to confusing, hard to debug behavior. This rule flags function parameters whose types are not readonly, encouraging the use of Readonly<T>, readonly arrays, and other immutable type constructs.

Examples of incorrect code for this rule:

function foo(arr: string[]) {}
function bar(obj: { prop: string }) {}
function baz(arg: Set<string>) {}

Examples of correct code for this rule:

function foo(arr: readonly string[]) {}
function bar(obj: Readonly<{ prop: string }>) {}
function baz(arg: ReadonlySet<string>) {}
function qux(value: string) {} // primitives are always readonly

Original Documentation