【Bug?】3.6.1为什么提示Node[]为readonly

  • Creator 版本:3.6.1

升级到3.6.1之后的一个报错
就一个挺常用的写法,反正之前版本肯定是正常

虽然vs报错,但不影响预览和打包
就是写代码的时候有点难受
感觉应该是个bug

let a:[number]=[1] // 对
a=[1,2] //错
let nds:[Node]=[node] //对
nds=[node1,node2] //错

[Node]
length为1的Node数组

rows: Node[] = []

嗯 这个我试出来了,所以在开头写了

private rows :Node[] = [null]

但这样也不影响后面会报错
然后我想问,那要怎样设定row是空数组呢(如果我有需要的话)

所以定义数组的时候,数组不能为空,只能是length为1的数列
之后赋值也不能用 array1 = arrray2 的方式,要把array2的元素一个个push进去?

奥抱歉看错了,我想想啊

let rows: Node[] = null;
rows = this.node.children;//报错
rows = [... this.node.children];//OK
rows = [].concat(this.node.children);//OK

也相当于一个一个加进去了

喔喔 谢谢谢谢!我刚也试了,确实是这样
对了 想请教一下[… array]这个写法是什么意思,我以前没见过这种写法

喔喔,为什么新版在定义时要有这个限制…
如果我要定义一个长度不等于1的数组,那就只能一个个往里面push?

你要用children数组,直接用for of就好了,没必要再赋给某个变量

不是长度问题,children 不能被修改,所以你的变量也得定义成 readonly

喔喔 原来是这样 明白了

Spread syntax
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

喔喔 感谢!!