# E0313: 'readonly' only works with array types and tuple types

In TypeScript, array types and tuple types can be marked `readonly`, which prevents methods like `.push` from being called on the array. It is a syntax error to use `readonly` on something which is not an array or tuple type:

    function isVerified(user: readonly User) {
      return user.verificationDate !== null;
    }

    const nudge = (
      players: readonly Player,
      dx: number,
      dy: number,
    ) => players.map(p => ({...p, /* ... */ }));

To fix this error, replace `readonly Type` with `Readonly<Type>`:

    function isVerified(user: Readonly<User>) {
      return user.verificationDate !== null;
    }

Alternatively, make the type an array type by adding `[]`:

    const nudge = (
      players: readonly Player[],
      dx: number,
      dy: number,
    ) => players.map(p => ({...p, /* ... */ }));

Introduced in quick-lint-js version 2.10.0.

Documentation for other errors