2017-10-20 1 views
1

Ich habe einige Maschinenschrift Code geerbt, die (innerhalb einer Funktion) wie folgt aussieht:Maschinenschrift const x = [... this.x]

const Statuses = [...this.Statuses] 

this.Statuses auf ein Array von Statuscodes bezieht (definiert als Status = status [];) definiert in derselben .ts Datei. Nach der obigen Zeile arbeitet der Code auf Status

Ich versuche zu verstehen, was die Syntax [... this.var] tut? Warum nicht einfach auf das verweisen?

Ja, ich bin neu in Javascript/Typoskript ....

Vielen Dank im Voraus.

+0

JavaScript ES6 oder JS 2016, viele neue Funktionen hinzugefügt. Dies ist einer von ihnen. Bitte nehmen Sie 30min von urs, um ES6 zu lesen. Es wird Ihnen helfen, neue Syntax zu verstehen. https://babeljs.io/learn-es2015/ – xdeepakv

+1

@DeepakSharma: Es gibt keine JS 2016. Ich denke du meinst ES2015. –

+0

Was auch immer Mann, ich gab Beispiel mit angehängtem Link. nichts persönliches – xdeepakv

Antwort

3

Es ist "spread notation", es verteilt this.Statuses (die eine Art von Iterable sein muss, wie ein Array) in diskrete Elemente. In diesem Fall bilden diese ein neues Array (weil die ...this.Statuses innerhalb [] liegt, die ein Array erstellt). Wenn this.Statuses ein Array ist, ist es funktional identisch mit const Statuses = this.Statuses.slice(); (oder auch das folgende).

Wenn this.Statuses eine andere Art von Iterable ist, ist es funktionell identisch mit const Statuses = Array.from(this.Statuses);.

+4

@jcalz: OMG, sprechen über Autopilot. Fest, danke. (Ich sagte wörtlich "... es breitet sich aus ..." und doch verpasste ich noch "Ruhe". Seufz. Zumindest habe ich es nicht als Operator bezeichnet. :-)) –

1

Es ist ein ästhetisch ansprechender Weg Kopieren ein Array, um Mutationen zu vermeiden, das Original. Es verwendet die Streusyntax, wie in anderen Antworten erwähnt.

const a = [ 1 ] 
 
const b = a 
 
const c = [...a] 
 

 
b.push(2) 
 
c.push(3) 
 

 
console.log(` original: ${a}`) 
 
console.log(`reference: ${b}`) 
 
console.log(`  copy: ${c}`)

1

Es ist spread syntax. Es ermöglicht das Kopieren von Objekten von einem Array (oder Objekt) zu einem anderen. In Ihrem Fall wird es verwendet, um eine flache Kopie von this.Statuses zu erstellen, um ursprüngliche Array-Mutationen zu vermeiden. Danke dafür, wenn Sie zum Beispiel das neue Element auf Statuses schieben, bleibt das ursprüngliche Array (this.Statuses) unverändert.

Verwandte Themen