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
}
}
