数组中的数组,出现错误:无法将类型[[string,string,number]'分配给类型[[]'

时间:2019-01-05 15:43:21

标签: angular typescript

我想让一个数组充满其他包含字符串或数字的数组:

var mainarray: [] = [];
xy.forEach(function (foo) {
    var subarray: [] = ['test', 'test', 3];
    mainarray.push(subarray);
});

但是我收到此错误:

 Type '[string, string, number]' is not assignable to type '[]'.
Argument of type '[]' is not assignable to parameter of type 'never'.

我该如何声明变量mainarray和subarray以便起作用?

(稍后我使用此数组创建jsonstring)

3 个答案:

答案 0 :(得分:3)

将数组的类型设置为:

var mainarray: Array<number | string>[] = [];

答案 1 :(得分:0)

不太确定您要在这里完成什么,因此如果没有上下文,我无法提供更好的答案,但是您可以这样做:

let mainarray = [];
let xy = [1,2];

function test() {
     xy.forEach(x => {
         mainarray = [ ...mainarray, ['test', 'test', 3]];
     })

    console.log(mainarray);
}

答案 2 :(得分:0)

在尝试运行此代码段时,我收到另一条错误消息:

  

类型'[字符串,字符串,数字]'不能分配给类型'[]'。     属性“长度”的类型不兼容。       类型'3'不能分配给类型'0'。

因此,您的类型声明应为string[] |number[](string | number)[],而不仅仅是[]。 因此,您的代码段应如下所示:

var mainarray: [] = [];
xy.forEach(function (foo) {
    var subarray: string[] | number[] = ['test', 'test', 3];
    orders.push(subarray);
});