Typescript: Incorrect usage of Union Typing (mostly options)
@aleksandar-cloudinary ci sta già lavorando.
Dal 28/5/2023.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
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.
- Lingua principale
- JavaScript
- Stelle
- 672
- Fork
- 318
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cloudinary/cloudinary_npm
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
cloudinary/cloudinary_npm#746 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
cloudinary/cloudinary_npm#739 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
cloudinary/cloudinary_npm#713 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
cloudinary/cloudinary_npm#712 · 1 commento ·
Tutte le issue di cloudinary/cloudinary_npm
Issue simili
-
bug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
open-webui/open-webui#34458 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
-
area: install-setup needs-info question
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
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
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
themactep/thingino-firmware#2018 ·
I maintainer di solito rispondono entro 1 giorno