typescript 数组调用indexof 提示:类型“string | number”的参数不能赋给类型“never”的参数

type arr = Array<string> | Array<number>;
type duoArr = Array<arr>;

const duoArr: duoArr = [[1], ['a']];
const arr = duoArr[0];

arr.indexOf(arr[0]); //提示:类型“string | number”的参数不能赋给类型“never”的参数。不能将类型“string”分配给类型“never”。

const arr2 = duoArr[0] as Array<number | string>;

arr2.indexOf(arr[0]); //正常

image.png
如上代码
刚开始学ts没多久
我定义了一个二维数组,子数组调用indexof的时候,ts提示
类型“string | number”的参数不能赋给类型“never”的参数。不能将类型“string”分配给类型“never”。
对子数组类型断言后则不会出现这种提示。
不太明白为什么会这样。
不知道有没有其他方法可以解决。

阅读 24.6k
1 个回答
`type arr = Array<string | number>`

因为你 type arr 这里使用的是

Array<string> | Array<number>;

也就是说 他可能是一个纯字符串的数组或者数字的数组
但是底下你在使用的时候却是一个既含有字符串又有数字的数组 所以在检索的时候类型错误了就

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏