[Array.prototype.reduce] TS infers accumulator type as any[]

Aperta
#33,886 1 commento 11 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
typescript
Ambito
compilers

Direzione di ricerca

Inizia con la riproduzione collegata di TypeScript Playground con noImplicitAny e confrontala con le issue correlate 25454 e 29604. Il lavoro è completato quando l'accumulatore di array vuoto viene diagnosticato o segnalato in modo coerente con gli altri casi di array vuoti, producendo l'errore del compilatore previsto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

In Discussion Suggestion

TypeScript Version: 3.7-Beta, "noImplicitAny" compiler mode

Search Terms:
Array.prototype.reduce, reduce type inference, reduce implicit any

Code

const result = [1].reduce((acc, item) => {
    acc.push(item)
    return acc
}, [])

result[0].toLowerCase()

Expected behavior:

  1. result implicitly has type any[] -> compiler error ("noImplicitAny")
    or
  2. result has type unknown[] -> compiler error

Actual behavior:
result has type any[], no errors

Playground Link: http://www.typescriptlang.org/play/?strictNullChecks=false&strictPropertyInitialization=false&ts=3.7-Beta&ssl=6&ssc=24&pln=1&pc=1#code/MYewdgzgLgBATgUwgVwDawLwwNoEYC6AdIgCbLAIAUlAhsMADQwCWUCAtgJQwYB8MAbwBQMUTDrBCAB2QQAFpVYdOIsYijI4YcfSEBfJtnwqhiFOmwAGIlBAAZEAHcEcAMI0IVTkA

Related Issues: https://github.com/microsoft/TypeScript/issues/25454, https://github.com/microsoft/TypeScript/issues/29604

P.S. It seems reasonable to align behavior with other empty array cases, e.g.:

let x = {
    array: [] // Object literal's property 'array' implicitly has an 'any[]' type
}

let x = []
x[0].toLowerCase() // Variable 'x' implicitly has type 'any[]' in some locations where its type cannot be determined
Lingua principale
Go
Stelle
111k
Fork
14.4k
Merge medio
1g 19h
PR unite (30g)
117

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/TypeScript

Tutte le issue di microsoft/TypeScript

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.