Microsoft/TypeScript

Intersection for same key read-only property maybe wrong

Open

#61.344 geöffnet am 4. März 2025

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: IntersectionHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

🔎 Search Terms

Intersection readonly property

🕗 Version & Regression Information

  • This changed between versions 4.4.4 and 4.5.5 (But all versions have errors)

⏯ Playground Link

https://www.typescriptlang.org/play/?ts=5.4.5#code/FAFwngDgpgBAgjAvDA3jA1gLhgOwK4C2ARlAE4wC+oksAQkqjKVAIYAmA9jgDZgbb5iZSsGAAKFBRgsAzvBgAyGLQCUAOnQMADAG5xk6XPpK46zcl2jw0GAFkW6KAHVSASxAsi3KAB4AKgB8DGgAtMzsXLwwANoA0jCuOBhQYBwAZjB+ALrYfnFZlHqiVjQwAMIM9o4u7p7ePrQBehJSsuVm2s0GbRVKqhqd+q1Giu0DFkVAA

💻 Code


type A = { k: number }
type B = { readonly k: number }

({} as A & B).k = 0;
({} as B & A).k = 0;

type MakeWritable<T> = { -readonly [K in keyof T]: T[K] };




type C = MakeWritable<B>;
({} as C).k = 0;
({} as C & B).k = 0;
({} as B & C).k = 0;


🙁 Actual behavior

command:

z:\webdl\test>tsc --target esnext --lib esnext test.ts

output:

test.ts:15:15 - error TS2540: Cannot assign to 'k' because it is a read-only property.

15 ({} as C & B).k = 0;
                 ~

test.ts:16:15 - error TS2540: Cannot assign to 'k' because it is a read-only property.

16 ({} as B & C).k = 0;
                 ~


Found 2 errors in the same file, starting at: test.ts:15

🙂 Expected behavior

no error.

Additional information about the issue

No response

Contributor Guide