Order of intersection types leads to non-deterministic results
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- react, typescript
- Domaine
- documentation
Piste de recherche
Commencez par reproduire le problème avec les deux exemples d’intersection TypeScript du rapport et comparez les métadonnées de props générées. Suivez comment la sortie de la documentation détermine si children est requis pour chaque ordre d’intersection. C’est terminé lorsque les deux ordres produisent le même résultat correct concernant le caractère requis.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The following:
import React from 'react';
type Props = { children: React.ReactNode; } & { children?: React.ReactNode; }
const Component = ({ children }: Props) => {
return <div>{children}</div>
}
export default Component;
Gives these results:
{
"description": "",
"displayName": "Component",
"methods": [],
"props": {
"children": {
"required": false,
"tsType": {
"name": "ReactReactNode",
"raw": "React.ReactNode"
},
"description": ""
}
}
}
As you can see, children are NOT required, however, if I switch the order of the intersection type:
import React from 'react';
type Props = { children?: React.ReactNode; } & { children: React.ReactNode; }
const Component = ({ children }: Props) => {
return <div>{children}</div>
}
export default Component;
Then the result is different, with children now being required...
{
"description": "",
"displayName": "Component",
"methods": [],
"props": {
"children": {
"required": true,
"tsType": {
"name": "ReactReactNode",
"raw": "React.ReactNode"
},
"description": ""
}
}
}
Is this expected behaviour?
- Langage dominant
- TypeScript
- Étoiles
- 3.8k
- Forks
- 316
- Merge moyen
- 2 h 29 min
- PR mergées (30 j)
- 5
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 88 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 ·
-
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
-
effort:S priority:P2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
cameri/nostream#811 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
dam-agents/dam#4562 ·
Les mainteneurs répondent en général sous 1 jour
-
bug p3 triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
bug javascript P2-medium python release:v3.1
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
adrirubio/claude-deck#546 ·
Les mainteneurs répondent en général sous 1 jour