agiledigital-labs / agiledigital-labs/eslint-plugin-total-functions

[no-unsafe-mutable-readonly-assignment] make exception for array concat parameter `ConcatArray`

Ouverte
#132 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
good first issue help wanted
Langage dominant
TypeScript
Étoiles
92
Forks
5
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

_NB this issue is distinct from (but related to) #100. That issue is about the return type, this is about the parameter type._

Concatenating a mutable array to another array is currently flagged by `no-unsafe-mutable-readonly-assignment`:

```ts
const arr: Array = [""];
const foo: Array = arr.concat(arr); // Flagged by no-unsafe-mutable-readonly-assignment
```

This is strictly correct, because `concat` takes a `ConcatArray` type that has **readonly** length and number index properties:

```ts
interface ConcatArray {
readonly length: number;
readonly [n: number]: T;
join(separator?: string): string;
slice(start?: number, end?: number): T[];
}
```

Even though this is correct (at least strictly speaking) it's not useful, because it cannot lead to surprising mutation in any readonly values.

We should treat this as a special case and ignore it in the `no-unsafe-mutable-readonly-assignment` rule.

**Bonus points**: are there any other methods (especially on the array type) that we should ignore for the same reason?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.