microsoft / microsoft/TypeScript
Incorrect error on legitimate type overlap
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Go
- Star
- 111k
- Fork
- 14.4k
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 117
Mô tả
TypeScript Version: 4.1.0-dev-20201102
Search Terms:
This condition will always return 'false' since the types 'X' and 'Y' have no overlap.
Code
function fn<T>(t: T) {
return t === '' // error
}
fn('') // but here we pass it
Expected behavior:
It works when we extend unknown. While this works on simple generics, it becomes inconvenient when the type parameter is nested deeper in a type structure.
function fn<T extends unknown>(t: T) {
return t === '' // works
}
fn('') // works
Actual behavior:
This condition will always return 'false' since the types 'T' and 'string' have no overlap.
Related issues
https://github.com/microsoft/TypeScript/issues/27910
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện phép so sánh generic trong trình biên dịch TypeScript bằng mã và các liên kết Playground được cung cấp, sau đó so sánh với ví dụ T extends unknown. Điều tra chẩn đoán về phần giao nhau của kiểu và issue liên quan #27910; được xem là hoàn thành khi phép so sánh hợp lệ không còn báo rằng nó sẽ luôn trả về false, trong khi các phép so sánh không hợp lệ vẫn tiếp tục được chẩn đoán.
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ó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 48/100