microsoft / microsoft/TypeScript

Intersection for same key read-only property maybe wrong

Đang mở
#61,344 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Bug Domain: Intersection Help Wanted
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### 🔎 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

```ts

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

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

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

type C = MakeWritable;
({} 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_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với liên kết Playground và bản tái hiện trong `test.ts`, sau đó chạy lệnh `tsc --target esnext --lib esnext test.ts` được nêu. Theo dõi cách checker của TypeScript xử lý các intersection và thuộc tính readonly; hoàn tất khi hai phép gán intersection `C` biên dịch được mà không có TS2540, đồng thời bản tái hiện vẫn được bao phủ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript
Lĩnh vực
compilers
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.