microsoft / microsoft/TypeScript
bug: error message says 0n is truthy
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ả
🔎 Search Terms
falsey, truthy, bigint, PseudoBigInt, TS Error 2872, TS Error 2873, unnecessary condition, constant condition
🕗 Version & Regression Information
- This changed between versions 5.5.4 and 5.6.3,
- https://github.com/microsoft/TypeScript/pull/59217 (playground)
⏯ Playground Link
https://www.typescriptlang.org/play/?target=99&ts=5.7.0-dev.20241022#code/JYMwBAFADAdglGA3mFAoAvkA
💻 Code
0n is falsy.
if (0n) {
// won't happen
}
🙁 Actual behavior
TS 2872: This kind of expression is always truthy.
🙂 Expected behavior
TS 2873: This kind of expression is always falsy.
Additional information about the issue
I am presuming that this is due to this function, which always reports BigIntLiteral as PredicateSemantics.Always, rather than checking for 0n.
Looks like this has been present since the always-truthy/always-falsey check was initially created: https://github.com/microsoft/TypeScript/pull/59217/files#diff-d9ab6589e714c71e657f601cf30ff51dfc607fc98419bf72e04f6b0fa92cc4b8R44293
I'd be happy to drop a PR if this is accepted and that's the issue.
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
Bắt đầu trong src/compiler/checker.ts tại hàm ngữ nghĩa predicate được liên kết và tái hiện hành vi trong liên kết TypeScript Playground được cung cấp. Xác nhận rằng 0n được phân loại là luôn falsy và chẩn đoán thay đổi từ TS 2872 thành TS 2873, đồng thời thêm coverage bằng cấu trúc kiểm thử hiện có của compiler.
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