Typescript/JavaScript - Hur skickar man rest-parametrar till efterföljande funktion som parametrar och inte som array?
Typescript/JavaScript-fråga.
Jag skapade min egen log()-metod där jag kunde slå på och av loggning vid behov (inte viktigt), men just nu använder jag en enkel console.log(). Här är koden:
log(message: any): void {
console.log(message)
}
Nyligen bestämde jag mig för att skicka flera parametrar, eftersom console.log stödjer vilket antal parametrar som helst genom att använda det som: console.log(a, b, c). Så jag bestämde mig för att använda restparametern och anpassa min metod till följande:
log(...message: any[]): void {
console.log(message)
}
Fungerar utmärkt. Men när jag använder min log-metod med valfritt antal parametrar, så skriver console.log ut en array och inte separata värden som om jag hade använt det direkt. Jag kan förstå varför, eftersom meddelandet kan ses som en enskild parameter av array-typ. Men hur skulle jag skicka en array till console.log (eller någon annan liknande funktion) och förklara att det inte är en enskild parameter av array-typ, utan flera parametrar?
Jag skulle verkligen vilja undvika att definiera 10 valfria parametrar och skicka dem som de är :)
Svar #1
Det finns åtminstone 2 alternativ för att göra detta:
Alternativ 1:
log(...message: any[]): void {
console.log(...message)
}
Alternativ 2: Använd Function.prototype.apply.
t.ex.
log(...message: any[]): void {
console.log.apply(null, message)
}
Detta kommer att använda din rad av argument som du förväntar dig.
https://developer.mozilla.org/sv/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
