Typescript: Incorrect usage of Union Typing (mostly options)
@aleksandar-cloudinary がすでに取り組んでいます。
2023年5月28日 から。
評価
この issue はまだ評価されていません。
説明
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.
- 主要言語
- JavaScript
- スター
- 672
- フォーク
- 318
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cloudinary/cloudinary_npm のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
cloudinary/cloudinary_npm#746 · コメント 1 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
cloudinary/cloudinary_npm#739 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 58/100
cloudinary/cloudinary_npm#734 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
cloudinary/cloudinary_npm#713 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
cloudinary/cloudinary_npm#712 · コメント 1 件 ·
cloudinary/cloudinary_npm の issue をすべて見る
似ている issue
-
bug confirmed issue
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
open-webui/open-webui#34458 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
documentation good first issue
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
-
area: install-setup needs-info question
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
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
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
themactep/thingino-firmware#2018 ·
メンテナーはふだん 1 日以内に返信