TypeScript报错:类型‘never[]’无法赋值给‘number’,如何解决?
问题分析与解决
首先,报错的核心原因是类型不匹配:你把matrix定义成了number[][]类型(二维数字数组,每个子元素必须是number),但你在matrix[i][j] = []这行给数组元素赋值了一个空数组,TypeScript自然会抛出类型不兼容的错误。
而且这行代码逻辑上完全多余——紧接着你就把matrix[i][j]设为1了,之前的数组赋值没有任何实际作用,直接删掉就能解决报错。
修正后的最简代码
const matrix: number[][] = []; for (let i = 0; i < 7; i++) { for (let j = 0; j < 7; j++) { if (!matrix[i]) matrix[i] = []; matrix[i][j] = 1; } }
更高效的初始化方式
如果想简化代码,避免内层循环的判断,可以直接初始化每一行:
const matrix: number[][] = []; for (let i = 0; i < 7; i++) { matrix[i] = new Array(7).fill(1); }
或者用更简洁的数组推导写法:
const matrix: number[][] = Array.from({ length: 7 }, () => Array(7).fill(1));
内容的提问来源于stack exchange,提问作者Nikita Polevoy
相关产品推荐
相关产品推荐

