Type definition for TilemapLayer.getTileAt is wrong
Maintainer thường phản hồi trong vòng 2 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 70/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, typescript
- Lĩnh vực
- game-dev
Hướng nghiên cứu
Vấn đề nằm ở kiểu trả về được khai báo của getTileAt() trên Phaser.Tilemaps.TilemapLayer. Kiểu này ghi Phaser.Tilemaps.Tile nhưng có thể trả về null khi tọa độ x/y nằm ngoài layer. Hãy tìm khai báo kiểu của phương thức đó và kiểm tra xem kiểu trả về có nên bao gồm null hay không. Công việc hoàn tất khi khai báo khớp với hành vi lúc chạy và đoạn mã tái hiện trong issue không còn biên dịch được nếu thiếu kiểm tra null.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Version
- Phaser Version: 4.2.1
- Operating system: Linux
- Browser: not relevant
Description
When using a Phaser.Tilemaps.TilemapLayer object, it exposes the method getTileAt(). The return type of that method according to the type definition is Phaser.Tilemaps.Tile. However, it could also return null if the given x/y coordinates are not within layer bounds.
Example Test Code
getTileId(tx:number, ty:number, layer: Phaser.Tilemaps.TilemapLayer): number {
return layer.getTileAt(tx, ty).index ?? 0
}
The typescript compiler will happily accept this code but passing in values for tx and ty that are outside the layer boundaries will cause Cannot read properties of null (reading 'index') at runtime.
If I put an optional chaining operator (?) there, I would get the error Unnecessary optional chain on a non-nullish value and only if I manually type coerce it into as Phaser.Tilemaps.Tile | null the compiler does not complain.
Additional Information
- Ngôn ngữ chính
- JavaScript
- Star
- 40.5k
- Fork
- 7.2k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc 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.
Issue khác của phaserjs/phaser
-
Shader.preDestroy leaks its ShaderQuad's vertex buffer and VAO on every create/destroy cycle (4.2.1)Có thể đã có người làm @k1epg01ng129-eng đã nhận 7 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Black opaque background on transparent Phaser.Text textures in Phaser 4.2.1 on older iOS WebGLĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 2 ngày
-
flipY renders tile incorrectlyCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 2 ngày
-
WebGL stroke of a Polygon drops a vertex when its origin-shifted position equals the previous raw vertexCó thể đã có người làm @ICOM725 đã nhận 45 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
phaserjs/phaser#7361 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
MouseManager.stopListeners never removes the wheel listener — destroyed Game stays retained through the canvasCó thể đã có người làm @schulerj89 đã nhận 85 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của phaserjs/phaser
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
fix(套件): test_bundle 往仓库的 preset/skills 写哨兵,并发跑的 test_installer 拷贝时撞 ENOENT(CI 红)Có thể đã có người làm @Miaotofu01 đã nhận hôm nay. Đang mởneeds-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Miaotofu01/Study-Mate#216 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
-
beginner-friendly category:fixtures community enhancement first-timers-only good first issue hacktoberfest help wanted low hanging fruit micro-contribution type: task up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
Berserk-hub150/skillhawk#229 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 8 ngày