microsoft / microsoft/TypeScript
Assigning array values by index treats Array<A> | Array<B> as Array<A | B>
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
TypeScript Version: 4.0.0-dev.201xxxxx
reproducible starting from at least 3.3.3
Search Terms: discriminated unions, distributive
Code
// A *self-contained* demonstration of the problem follows...
// Test this by running `tsc` on the command-line, rather than through another build tool such as Gulp, Webpack, etc.
function main() {
var a: (number[] | string[]) = [];
a[0] = 3;
a[1] = "xxx";
}
Expected behavior:
error TS2322: Type '"xxx"' is not assignable to type 'number'.
Actual behavior:
All is compiled without warnings or errors.
Keep in mind that this works as expected:
var a: (number[] | string[]) = [3, "xxx"]; // Not OK as it should be
Thus, depending on how exactly we're initialising the array, behaviour differs.
Playground Link:
https://www.typescriptlang.org/play?ts=4.0.0-dev.20200508#code/C4TwDgpgBAggTnAcgVwLYGVhygXigOzQCMI4BtAXSgB8oBnLAS3wHNKBuAKE4DNl8AxsEYB7fFFQBDZgAoAlFADenKKqgA3SdkkAuKDMKoS5KrQZxmbCgtxQOUFWslkADFTwBmLmqjOAjO5QAEQAHmFBXAC+nEA
Related Issues:
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 riproduttore TypeScript autonomo ed eseguilo tramite tsc dalla riga di comando, confrontando le assegnazioni indicizzate con l’inizializzazione tramite literal di array. L’issue non indica file sorgente né test, quindi segui il percorso del checker per un’assegnazione indicizzata su un’unione di tipi array. Il lavoro è completato quando l’assegnazione riprodotta segnala l’errore di tipo previsto senza introdurre regressioni nel comportamento di inizializzazione correlato.
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
- Specificata chiaramente
- Idoneità per principianti
- 35/100