microsoft / microsoft/TypeScript
Properties detectable as excess due to missing discriminant should be flagged in JSX expressions
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
Bug Report
When using TSX syntax to create a element which props are typed as a discriminated union, validation works when given element is constructed in TSX syntax without children, but loses validation once you add children.
🔎 Search Terms
react createElement validation tsx jsx children throws
🕗 Version & Regression Information
- This is the behavior in every version I tried (3.x - 4.3.0-beta)
⏯ Playground Link
Playground link with relevant code
💻 Code
// this one should error but does not because it has children (tsx syntax)
const B = (
<Accordion defaultSelectedKeys={new Set()}>
<span>1</span>
</Accordion>
)
// while using createElement it does error (like it should)
React.createElement(Accordion, {defaultSelectedKeys:new Set<Key>()}, <span>1</span>)
// while these also error (like they should) because they are without children.
const X = <Accordion defaultSelectedKeys={new Set()} />
const Y = <Accordion multiple defaultSelectedKey="1" />
🙁 Actual behavior
Like shown above, while React.createElement throws like it should, using TSX syntax though, it stops working.
🙂 Expected behavior
Same behavior as with createElement - raise a validation error with children
Guida per i contributori
Apri 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.
Direzione di ricerca
Inizia con il TypeScript Playground collegato e confronta gli esempi TSX con la chiamata a React.createElement, concentrandoti sulle discriminated-union props quando sono presenti children. Traccia la validazione delle props JSX del compilatore e aggiungi un test di regressione per il caso Accordion mostrato; il lavoro è completato quando TSX segnala lo stesso errore di validazione di createElement.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- react, typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100