Typescript: Incorrect usage of Union Typing (mostly options)
@aleksandar-cloudinary đang làm issue này rồi.
Từ ngày 28/5/2023.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Describe the bug in a sentence or two.
Many options type arguments are using union when the intention is an intersection.
Issue Type (Can be multiple)
- Build - Can’t install or import the SDK
- Babel - Babel errors or cross browser issues
- Performance - Performance issues
- Behaviour - Functions aren’t working as expected (Such as generate URL)
- Documentation - Inconsistency between the docs and behaviour
- Incorrect Types - For typescript users who are having problems with our d.ts files
- Other (Specify)
Steps to reproduce
An example using the ConfigAndUrlOptions type.
import { v2 as cloudinary, ConfigAndUrlOptions } from 'cloudinary';
const options: ConfigAndUrlOptions = {
version: "1",
cloud_name: "something",
// ConfigOptions type is `boolean`, here it is a string
force_version: "true",
};
// look at typescript tooltip for the options object
cloudinary.url('puclic_id', options);
This example will not fail to compile. However, force_version is provided as a string.
Correct Usage
Instead of a union, the ConfigAndUrlOptions object should be an intersection.
import { v2 as cloudinary, ConfigOptions, UrlOptions } from 'cloudinary';
type ConfigAndUrlOptions = ConfigOptions & UrlOptions;
const options: ConfigAndUrlOptions = {
version: "1",
cloud_name: "something",
// typescript compile error, wrong type provided
force_version: "true",
};
cloudinary.url('puclic_id', options);
Wrap Up
There are a lot of unions being mis-used this way. I'm happy to help create a PR. However, doing so would take significant time for me.
- Ngôn ngữ chính
- JavaScript
- Star
- 672
- Fork
- 318
- 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
- Không 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 cloudinary/cloudinary_npm
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
cloudinary/cloudinary_npm#746 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
cloudinary/cloudinary_npm#739 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
cloudinary/cloudinary_npm#713 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
cloudinary/cloudinary_npm#712 · 1 bình luận ·
Tất cả issue của cloudinary/cloudinary_npm
Issue tương tự
-
bug confirmed issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
open-webui/open-webui#34458 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
-
area: install-setup needs-info question
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
accessibility area: css area: web ui bug difficulty: easy frontend good first issue help wanted javascript journey: first-visit journey: mobile priority: P3 quality tech: css tech: html typescript ui user-experience
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/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 75/100
themactep/thingino-firmware#2018 ·
Maintainer thường phản hồi trong vòng 1 ngày