At sende et array til en spredningsoperatorparameter med TypeScript


Jeg har en klasse, der arver fra Array:

class List<T> extends Array<T> {
    constructor(items: T[]) {
        super(items); // error here...
    }
}

Argument af typen 'T[]' kan ikke tildeles til parameter af typen 'T'.

Under antagelse af, at dette er fordi Arrays konstruktør tager (...items: T[])

Så, hvordan sender jeg et standardarray til noget, der bruger spread-operatoren?

Svar #1

Array-konstruktøren tager et vilkårligt antal parametre. Hvis du indsætter et array i new Array(), bliver det tildelt til den første indeks.

const newArray = new Array([1, 2, 3]);
console.log(newArray); // [[1, 2, 3]];

Brug spread-operatoren til at udvide arrayet ud til parametrene.

const newArray = new Array(...[1, 2, 3]); // equivalent to new Array(1, 2, 3);
console.log(newArray); // [1, 2, 3];

Så din klasse ville se sådan ud:

class List<T> extends Array<T> {
    constructor(items: T[]) {
        super(...items); // Spread operator here
    }
}

Relaterede artikler