Incorrect / overly strict types in 21.4.5
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript, node.js, typescript
Hướng nghiên cứu
Bắt đầu bằng cách đọc các thay đổi kiểu nghiêm ngặt hơn được tham chiếu trong #4562 và tái hiện lỗi TypeScript với ví dụ request.params được Joi xác thực. Theo dõi các kiểu của request.params và request.query, sau đó xác minh rằng tham số số đã được xác thực được báo cáo không còn tạo ra lỗi chuyển từ chuỗi sang số, mà không làm yếu các kiểm tra kiểu không liên quan.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Runtime
Node.js
Runtime version
24.13.1
Module version
21.4.5
Last module version without issue
21.4.4
Used with
No response
Any other relevant information
No response
What are you trying to achieve or the steps to reproduce?
Take advantage of Joi's type handling to directly reference appropriately typed parameters in request.params and request.query. For example:
function greetUser(id: number) {
assert(typeof id === "number", "ID must be a number");
return `Hello, user with ID ${id}!`;
}
server.route({
method: "GET",
path: "/hello/{id}",
handler: (request, _h) => {
// request.params.id is number, not string, because of Joi validation
return { message: greetUser(request.params.id) };
},
options: {
validate: {
params: Joi.object({
id: Joi.number().required(),
}),
},
},
});
What was the result you got?
Starting in Hapi 21.4.5:
Argument of type 'string' is not assignable to parameter of type 'number'.ts(2345)
What result did you expect?
No errors.
I believe that the stricter types in #4562 are too strict. I appreciate stricter typing (even if it breaks compilation in patch releases - #4563) but this seems too strict - from what I understand, relying on Joi to validate queries and route parameters and coerce / convert their types is a core feature of Hapi and is (I assume) a common practice, but the new types act like it isn't permitted / doesn't happen.
- Ngôn ngữ chính
- JavaScript
- Star
- 14.8k
- Fork
- 1.4k
- 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
- Không 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 hapijs/hapi
-
The data property of a Boom error gets mangled when the error comes from a validatorCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 70/100
-
The `abort` event on nodejs is deprecatedCó thể làm lại được @akashbirajdar04 đã nhận 170 ngày trước và không có pull request nào đang mở. Đang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
-
Error-tracking software doesn't catch hapi application errors if an incoming request gets prematurely closedCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Use ECMA Decorators for routingĐang mởfeature
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
bigskysoftware/htmx#4147 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
Please add PNG images as wellĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
vshymanskyy/StandWithUkraine#316 ·
-
README: the green and red points are swapped (green = .fset tracking, red = .fset3 detection)Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
bug/1-unconfirmed kind/bug
Độ 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 1 ngày