web-dev-qa-db-fra.com

Typescript - Paramètres par défaut sur la classe avec interface

J'ai un scénario où j'ai une interface qui a une méthode comme ça:

interface SomeInterface
{
   SomeMethod(arg1: string, arg2: string, arg3: boolean);
}

Et une classe comme ça:

class SomeImplementation implements SomeInterface
{
   public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}

Maintenant, le problème est que je n'arrive pas à dire à l'interface que la 3e option devrait être facultative ou avoir une valeur par défaut, comme si j'essayais de dire à l'interface qu'il y avait une valeur par défaut, j'obtenais l'erreur:

TS2174: Default arguments are not allowed in an overload parameter.

Si j'omet la valeur par défaut de l'interface et l'invoque comme ceci:

var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");

Il se plaint que les paramètres ne correspondent à aucun remplacement. Existe-t-il donc un moyen d'avoir des valeurs par défaut pour les paramètres et d'hériter d'une interface, cela ne me dérange pas si l'interface doit avoir la valeur par défaut aussi car elle sera toujours un argument optionnel.

38
Grofit

Vous pouvez définir le paramètre comme facultatif avec ?:

interface SomeInterface {
     SomeMethod(arg1: string, arg2: string, arg3?: boolean);
}
66
Ryan Cavanaugh