代码之家  ›  专栏  ›  技术社区  ›  nbar

数组中的数组,我得到一个错误:类型“[string,string,number]”不可分配给类型“[]”

  •  0
  • nbar  · 技术社区  · 6 年前

    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'.
    

    3 回复  |  直到 6 年前
        1
  •  3
  •   Ashish Ranjan    6 年前

    将数组的类型指定为:

    var mainarray: Array<number | string>[] = [];
    
        2
  •  0
  •   ye-olde-dev    6 年前

    我不太清楚你想在这里完成什么,所以我不能提供一个没有上下文的更好的答案,但你可以这样做:

    let mainarray = [];
    let xy = [1,2];
    
    function test() {
         xy.forEach(x => {
             mainarray = [ ...mainarray, ['test', 'test', 3]];
         })
    
        console.log(mainarray);
    }
    
        3
  •  0
  •   Unknown    6 年前

    类型“[string,string,number]”不可分配给类型“[]”。 属性“length”的类型不兼容。 类型“3”不可分配给类型“0”。

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

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