gpt4 book ai didi

typescript - 为什么 TypeScript 在使用 concat 缩减数组时会推断出 'never' 类型?

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:07 25 4
gpt4 key购买 nike

代码胜于语言,所以:

['a', 'b', 'c'].reduce((accumulator, value) => accumulator.concat(value), []);

代码很傻,返回一个复制的数组...

TS 提示 concat 的参数:TS2345:“字符串”类型的参数不可分配给“ConcatArray”类型的参数。

最佳答案

我相信这是因为 [] 的类型被推断为 never[],这是必须为空的数组的类型。您可以使用类型转换来解决这个问题:

['a', 'b', 'c'].reduce((accumulator, value) => accumulator.concat(value), [] as string[]);

通常这不会是什么大问题,因为 TypeScript 在根据您对空数组的操作找出更好的类型分配给空数组方面做得不错。但是,由于您的示例正如您所说的那样“愚蠢”,TypeScript 无法进行任何推断并将类型保留为 never[]

关于typescript - 为什么 TypeScript 在使用 concat 缩减数组时会推断出 'never' 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54117100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com