Feature: Option to remove `| undefined` from optional prop types
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 58/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- documentation, tooling
Direzione di ricerca
Inizia individuando il punto di ingresso del parser TypeScript e la gestione delle sue opzioni; nell’issue non sono indicati né un file né un test. Confronta l’opzione richiesta con il precedente lavoro collegato di react-docgen-typescript, quindi verifica che il parsing abilitato rimuova | undefined dai tipi delle prop opzionali, preservando il tipo significativo invece di segnalare una union.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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'
- Lingua principale
- TypeScript
- Stelle
- 3.8k
- Fork
- 316
- Merge medio
- 2h 29m
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la 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 reactjs/react-docgen
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
reactjs/react-docgen#1102 ·
-
Typescript StatusAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
reactjs/react-docgen#1005 · 4 reazioni ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
reactjs/react-docgen#997 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
reactjs/react-docgen#994 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
reactjs/react-docgen#982 · 2 commenti ·
Tutte le issue di reactjs/react-docgen
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
aiko-chan-ai/DiscordBotClient#380 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
vercel/ai-elements#507 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 84/100
anaclumos/qa-interns#148 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno