Feature: Option to remove `| undefined` from optional prop types
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 58/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- typescript
- Domaine
- documentation, tooling
Piste de recherche
Commencez par localiser le point d’entrée du parser TypeScript et la gestion de ses options de parser ; aucun fichier ni test n’est nommé dans l’issue. Comparez l’option demandée avec le travail antérieur lié de react-docgen-typescript, puis vérifiez que l’analyse activée supprime | undefined des types de props optionnelles tout en conservant le type pertinent au lieu de signaler une union.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
When using TypeScript's explicit optional property pattern (prop?: Type | undefined), react-docgen displays the type as union instead of showing the actual type.
This pattern is common in codebases using exactOptionalPropertyTypes: true in tsconfig, which requires explicit | undefined for optional properties.
Example
interface ButtonProps {
onClick?: ((event: MouseEvent) => void) | undefined
variant?: 'primary' | 'secondary' | undefined
icon?: ReactNode | undefined
}
In Storybook's props table (using react-docgen), these all display as "union" instead of:
(event: MouseEvent) => void'primary' | 'secondary'ReactNode
Requested Feature
Add a parser option similar to react-docgen-typescript's shouldRemoveUndefinedFromOptional:
{
shouldRemoveUndefinedFromOptional: true
}
When enabled, this would:
- Detect optional properties (those ending with
?) - Strip
| undefinedfrom their type representation - Display the actual meaningful type instead of "union"
Prior Art
react-docgen-typescript has this feature via the shouldRemoveUndefinedFromOptional option:
https://github.com/styleguidist/react-docgen-typescript#parseroptions
Workaround
Currently, Storybook users must manually specify table.type.summary for every affected prop:
argTypes: {
onClick: {
table: { type: { summary: '(event: MouseEvent) => void' } }
}
}
This is tedious and error-prone for large component libraries.
Environment
- react-docgen: latest
- TypeScript: 7.x with
exactOptionalPropertyTypes: true - Storybook: 10.x using
reactDocgen: 'react-docgen'
- Langage dominant
- TypeScript
- Étoiles
- 3.8k
- Forks
- 316
- Merge moyen
- 9 min
- PR mergées (30 j)
- 2
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le 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 reactjs/react-docgen
-
Support Babel 8 in babelParser (loadPartialConfigSync)Peut-être pris @Stanzilla l’a pris il y a 96 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
reactjs/react-docgen#1102 ·
-
Typescript StatusOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
reactjs/react-docgen#1005 · 4 réactions ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
reactjs/react-docgen#997 ·
-
Functions showing as "unknown" when encased in parenthesesPeut-être pris @sean0407 l’a pris il y a 6 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 42/100
reactjs/react-docgen#994 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
reactjs/react-docgen#982 · 2 commentaires ·
Toutes les issues de reactjs/react-docgen
Issues similaires
-
freshness freshness:observed-only
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
thoroc/context-radar#280 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
-
documentation story
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Billing: computeBundleEconomicsFrom treats a NULL component cost as 0, inflating bundle marginOuvertebug category:billing priority:p3 track:fast
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
LanternOps/breeze#9223 ·
Les mainteneurs répondent en général sous 1 jour