reactjs / reactjs/react-docgen
Better TS enum support
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 3.8k
- Forks
- 316
- Merge moyen
- 5 h 7 min
- PR mergées (30 j)
- 4
Description
Reporting from https://github.com/storybookjs/storybook/pull/24165
Currently TS enums analysis is lossy:
enum ButtonType {
Button = 'button',
Reset = 'reset',
Submit = 'submit',
}
type ButtonTestProps = {
type?: ButtonType;
};
export const ButtonTest = (props: ButtonTestProps) => {
return <button {...props}>Test</button>;
};
Produces:
"tsType": {
"name": "ButtonType"
},
Compare this to a union:
type ButtonType = "button" | "reset" | "submit";
Which produces:
"tsType": {
"name": "union",
"raw": "\"button\" | \"reset\" | \"submit\"",
"elements": [
{
"name": "literal",
"value": "\"button\""
},
{
"name": "literal",
"value": "\"reset\""
},
{
"name": "literal",
"value": "\"submit\""
}
]
},
It would be fantastic if react-docgen could produce something similar for enums!
Guide de contribution
Ouvrir 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.
Piste de recherche
L’issue ne mentionne aucun fichier, test ou point d’entrée. Reproduisez les exemples d’enum et d’union du rapport, puis localisez le chemin d’analyse TypeScript qui produit les objets tsType affichés. Le travail est considéré comme terminé lorsque les membres de l’enum conservent des informations structurées comparables à la sortie de l’union et que les checks existants pertinents passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- react, typescript
- Domaine
- documentation, tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100