J'essaie d'utiliser des valeurs par défaut pour la destruction de l'objet littéral, mais je ne reçois pas les valeurs par défaut, juste 'non défini'. Quelle est la bonne façon?caractèrescript destructuring objet littéral dans la construction de la classe, les propriétés par défaut ne fonctionne pas
import { Component } from '@angular/core';
export class Hero {
id: number;
name: string;
// constructor({id = 3, name = 'defaulthero'} = {}) {
constructor({id , name }: {id?: number, name?: string } = { id:3, name: 'defaulthero'}) {
console.log(id, name);
this.id = id;
this.name = name;
}
}
@Component({
selector: 'my-app',
template: `<h1>{{title}}</h1><h2>Hero {{hero3.id}} {{hero3.name}}</h2>`,
})
export class AppComponent {
title = 'Tour of Heros';
public hero3: Hero;
ngOnInit() {
//this.hero3 = new Hero () ; // work
//this.hero3 = new Hero ( {}) ; // does not work
this.hero3 = new Hero ({id: 0}) ; // does not work, default value 'defaulthero' not assign, just i get 'undefined'
}
}
votre réponse est beaucoup plus trompeuse d'autres à créer une interface supplémentaire juste pour créer une instance de classe existante. En gros, vous devez utiliser 'constructor (id: string = '3', name = 'Spiderman')' ou la façon dont j'ai fourni un seul code de ligne. – Pengyy