quick-lint-js

Find bugs in JavaScript programs.

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