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

no-unsafe-readonly-mutable-assignment failing to identify a ReadonlyShallow correctly

Open
#745 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
92
Forks
5
PR merge metrics
No merged PRs in 30d

Description

This is working:

```ts
type Thing = { a: string };

type OtherThing = { readonly a: string };

// This is correctly inferred to be ReadonlyShallow
type ThingArray = readonly Thing[];

// This is correctly inferred to be ReadonlyDeep
type OtherThingArray = readonly OtherThing[];

// ReadonlyDeep
declare const a: OtherThingArray;

// Flagged (ReadonlyDeep -> ReadonlyShallow)
const b: ThingArray = a;
```

But this isn't:

```ts
type Thing = { a: string };

type OtherThing = { readonly a: string };

// ReadonlyDeep
declare const a: readonly OtherThing[];

// Not flagged (it thinks readonly Thing[] is ReadonlyDeep when it should be ReadonlyShallow)
const b: readonly Thing[] = a;
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.