🔎 搜索词
"array spread", "TS2322"
🕗 版本与回归信息
- 我在尝试的每个版本中都遇到了这种行为,并查阅了关于条目的FAQ。
⏯ Playground链接
https://www.typescriptlang.org/play?#code/MYewdgzgLgBAhgLhgQQE6rgTwDxgK4C2ARgKaowA+M0qAlmAOYB8MAvDANoC6A3AFChIsIkjQYc+YmRbsOAOgVwANDACMvIA
💻 代码
const a: Array<number | string> = [];
const b: Array<number> = [...a, 1];
🙁 实际行为
编译器给出以下两个错误,其中只有一个是合适的:
~/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];
~
🙂 预期行为
显然,数组展开是不正确的,因为原始数组可能包含字符串,但数字字面量不应该被标记为相同的错误。
1条答案
按热度按时间l5tcr1uw1#
这个问题已经被#52850修复了。我在那里推送了一个基于此问题的新测试用例,因为我最初是带着面向对象的用例准备的。