microsoft / microsoft/TypeScript
[Array.prototype.reduce] TS infers accumulator type as any[]
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
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:
resultimplicitly has typeany[]-> compiler error ("noImplicitAny")
orresulthas typeunknown[]-> compiler error
Actual behavior:
result has type any[], no errors
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der verlinkten TypeScript Playground-Reproduktion unter noImplicitAny und vergleiche sie mit den verwandten Issues 25454 und 29604. Die Arbeit ist abgeschlossen, wenn der Akkumulator für ein leeres Array konsistent mit den anderen Fällen leerer Arrays diagnostiziert oder gemeldet wird und der erwartete Compilerfehler erzeugt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100