web-dev-qa-db-fra.com

Comment définir des arguments de constructeur facultatifs avec des valeurs par défaut dans Typescript

Est-il possible d'avoir des arguments de constructeur optionnels avec une valeur par défaut, comme ceci

export class Test {
    constructor(private foo?: string="foo", private bar?: string="bar") {}
}

Cela me donne l'erreur suivante:

Le paramètre ne peut pas avoir de point d'interrogation ni d'initialiseur.

Je voudrais créer des instances comme

x = new Test();               // x.foo === 'foo'            
x = new Test('foo1');         // x.foo === 'foo1'
x = new Test('foo1', 'bar1');

Quelle est la bonne méthode TypeScript pour y parvenir?

42
Jeanluca Scaljeri

Un argument qui a une valeur par défaut est optionnel par définition, comme indiqué dans la documentation :

Les paramètres par défaut initialisés après que tous les paramètres requis sont traités comme facultatifs et peuvent, comme les paramètres facultatifs, être omis lors de l'appel de leur fonction respective.

C'est la même chose pour les constructeurs que pour les autres fonctions, donc dans votre cas:

export class Test {
    constructor(private foo: string = "foo", private bar: string = "bar") {}
}
59
Nitzan Tomer