microsoft / microsoft/TypeScript
Rest element type not recognized for inner array types
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.4k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
Bug Report
Hello,
The compiler doesn't recognize an inner array type as an "array type" when inferred in a conditional type.
🔎 Search Terms
I searched for array, rest element, inner array type, multidimensional array type.
Couldn't find anything.
⏯ Playground Link
Playground link with relevant code
💻 Code
The compiler complains with the following code:
type PushToTopArray<T, ArrayOfArray extends any[][]> =
ArrayOfArray extends [infer TopArray, ...infer Rest] ?
[[T, ...TopArray], ...Rest] :
never;
🙁 Actual behavior
with error: A rest element type must be an array type. (2574) on ...TopArray.
🙂 Expected behavior
But since ArrayOfArray extends any[][], the inferred TopArray should be of type any[] and therefore satisfy the rest element type.
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 la riproduzione collegata in TypeScript Playground e conferma l'errore sull'elemento rest TopArray inferito nel tipo condizionale. Traccia l'inferenza dei tipi condizionali e la validazione degli elementi rest del compilatore, quindi aggiungi la copertura che dimostri che l'array interno inferito viene accettato e che la riproduzione viene verificata dal punto di vista dei tipi senza errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100