Microsoft/TypeScript

Intersection for same key read-only property maybe wrong

Open

#61,344 opened on 2025幎3月4日

GitHub で芋る
 (0 comments) (0 reactions) (0 assignees)TypeScript (6,726 forks)batch import
BugDomain: IntersectionHelp Wanted

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (平均マヌゞ 6d 17h) (30d で 9 merged PRs)

説明

🔎 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

コントリビュヌタヌガむド