agiledigital-labs / agiledigital-labs/eslint-plugin-total-functions
[no-unsafe-mutable-readonly-assignment] make exception for array concat parameter `ConcatArray`
- Dominant language
- TypeScript
- Stars
- 92
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
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?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.