Typescript: Incorrect usage of Union Typing (mostly options)
@aleksandar-cloudinary y travaille déjà.
Depuis le 28/5/2023.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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.
- Langage dominant
- JavaScript
- Étoiles
- 672
- Forks
- 318
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cloudinary/cloudinary_npm
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
cloudinary/cloudinary_npm#746 · 1 commentaire ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
cloudinary/cloudinary_npm#739 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
cloudinary/cloudinary_npm#713 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
cloudinary/cloudinary_npm#712 · 1 commentaire ·
Toutes les issues de cloudinary/cloudinary_npm
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
discovery:other factory-active task-identify-harness-labels-done task-identify-issue-type-done
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
vercel/ai#25068 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
needs-triage typo
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
llm-d-incubation/llm-d-scaling-manager#122 ·
Les mainteneurs répondent en général sous 1 jour
-
create-strapi-app doesn't await writing license.txt, so a failed write skips its error handlingOuverteflag: invalid template issue: bug severity: low source: cli status: pending reproduction version: 5
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
strapi/strapi#28637 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Add a `CODE_OF_CONDUCT.md` fileOuvertemeta
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
matrix-org/matrix.org#3774 ·
Les mainteneurs répondent en général sous 1 jour