Microsoft/TypeScript
Auf GitHub ansehenIncorrectly reported `TS2322` error on array items after spread
Open
#55.340 geöffnet am 11. Aug. 2023
BugDomain: Error MessagesHelp Wanted
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
🔎 Search Terms
"array spread", "TS2322"
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about
⏯ Playground Link
💻 Code
const a: Array<number | string> = [];
const b: Array<number> = [...a, 1];
🙁 Actual behavior
The compiler gives the following two errors, of which only one is appropriate:
~/prog/typescript ❯ tsc ./array-spread-error.ts
array-spread-error.ts:2:27 - error TS2322: Type 'string | number' is not assignable to type 'number'.
Type 'string' is not assignable to type 'number'.
2 const b: Array<number> = [...a, 1];
~~~~
array-spread-error.ts:2:33 - error TS2322: Type 'string | number' is not assignable to type 'number'.
Type 'string' is not assignable to type 'number'.
2 const b: Array<number> = [...a, 1];
~
🙂 Expected behavior
The spread is clearly incorrect, as the original array could potentially contain strings as well, but the number literal should not be marked with the same error.