javascript - Är det möjligt att destrukturera en egenskap från objektet och tilldela den till en egenskap på konstruktorn?


Jag använder TypeScript och vill destrukturera egenskaper från ett objekt. Problemet är att jag behöver tilldela det till en egenskap på konstruktorn i klassen:

var someData = [{title: 'some title', desc: 'some desc'}];
var [{title}] = someData; // 'some title';

Jag vill ha något mer som:

var [{title :as this.title$}] = someData;

Är detta möjligt på något sätt?

Svar #1

Ja, du kan göra detta, men du behöver ta bort deklaratorn (var) eftersom du destrukturerar till något som redan finns. Dessutom är as ogiltig syntax. Ta bort den.

[{title: this.title$}] = someData;

Ett komplett exempel:

const someData = [
  { title: 'Destructuring' }
];

class A {
  title$: string;
  constructor() {
    [{ title: this.title$ }] = someData;
  }
}

TypeScript-lekplats

Babel REPL

Via ett Stack-utdrag

const someData = [{
  title: 'Destructuring'
}];

class A {
  constructor() {
    [{title: this.title$}] = someData;
  }
}

console.log(new A());