簡體   English   中英

錯誤TS2345:類型'X'的參數不能分配給類型'X []'的參數

[英]error TS2345: Argument of type 'X' is not assignable to parameter of type 'X[]'

當前,嘗試在Typescript中創建新對象時出現奇怪的行為。 有兩類:

export class SkaterDrawn {

    private ID;
    private name;
    ...

constructor(input?:any) {
    this.ID = input.ID;
    ...
}


export class SkaterDrawnTeam extends SkaterDrawn {
    private skaters:SkaterDrawn[];

    constructor(skaters:SkaterDrawn[]) {
        super(skaters[0]);
        this.skaters = skaters;
    }
    ...
}

this.registeredSkaters包含類型的元件的陣列SkaterDrawn 現在,我將該數組分組為一個大塊數組,如下所示:

this.registeredSkaters = this.registeredSkaters.groupBy('teamID');
this.registeredSkaters = Object.values(this.registeredSkaters);

輸出:

[
    [SkaterDrawn,SkaterDrawn,SkaterDrawn],
    [SkaterDrawn,SkaterDrawn,SkaterDrawn],
    [SkaterDrawn,SkaterDrawn,SkaterDrawn]
]

現在,我試圖以此創建一個新的對象:

let teams = this.registeredSkaters.map((item:SkaterDrawn[]) => 
    new SkaterDrawnTeam(item);
})

我期望得到一個SkaterDrawnTeam數組,但是編譯失敗並顯示

ERROR in src/app/competition/components/drawing/drawing.component.ts(166,30): 
error TS2345: Argument of type 'SkaterDrawn' is not assignable to parameter of type 'SkaterDrawn[]'.
Type 'SkaterDrawn' is missing the following properties from type 'SkaterDrawn[]': length, pop, push, concat, and 35 more.

Line 166,30行是我嘗試做new SkaterDrawnTeam(item)的行,我不知道為什么會失敗。 我在做什么錯,我該如何解決?

非常感謝您的幫助。

問題是SkaterDrawn []與(typeof SkaterDrawn)[]不同

let teams = this.registeredSkaters.map((item: (typeof SkaterDrawn)[]) => { 
               return new SkaterDrawnTeam(item);
             });

然后將您的班級更改為

export class SkaterDrawnTeam extends SkaterDrawn {
    private skaters:(typeof SkaterDrawn)[];

    constructor(skaters:(typeof SkaterDrawn)[]) {
        super(skaters);
        this.skaters = skaters;
    }
}

https://stackblitz.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM