Étant donné la signature suivante:
export interface INotificationService {
error(message: string, title?: string, autoHideAfter?: number);
}
Comment puis-je appeler la fonction error()
ne spécifiant pas le title
paramètre, mais le réglage autoHideAfter
à dire 1000
?
typescript
g.pickardou
la source
la source
?
est ajouté dans la définition de la fonction , mais la question concerne l' appel réel de la fonction.undefined
pour obtenir le même comportement que de supprimer complètement l'argument. Juste "tout ce qui n'est pas véridique" ne fonctionnera pas, car TypeScript se compare en fait àvoid 0
ce qui est une manière plus sûre d'écrireundefined
. )Malheureusement, il n'y a rien de tel dans TypeScript (plus de détails ici: https://github.com/Microsoft/TypeScript/issues/467 )
Mais pour contourner cela, vous pouvez changer vos paramètres pour être une interface:
la source
vous pouvez utiliser la variable facultative par
?
ou si vous avez plusieurs variables facultatives par...
, par exemple:Au dessus:
name
est requiscountry
est requis et a une valeur par défautaddress
est facultatifhobbies
est un tableau de paramètres facultatifsla source
Une autre approche est:
Donc, quand vous voulez omettre le paramètre title, envoyez simplement les données comme ça:
Je préfère cette option car elle me permet d'ajouter plus de paramètres sans avoir à envoyer les autres.
la source
title
?C'est presque la même chose que la réponse de @Brocco, mais avec une légère torsion: ne passez que des paramètres optionnels dans un objet. (Et aussi rendre l'objet params facultatif).
Cela finit par être un peu comme les kwargs de Python, mais pas exactement.
la source
Vous pouvez spécifier plusieurs signatures de méthode sur l'interface, puis avoir plusieurs surcharges de méthode sur la méthode de classe:
Maintenant, tout cela fonctionnera:
... et la
error
méthode deINotificationService
aura les options suivantes:Terrain de jeux
la source
Vous pouvez créer une méthode d'assistance qui accepte une base de paramètres d'un objet sur des arguments d'erreur
la source
Vous pouvez essayer de définir le titre sur null.
Cela a fonctionné pour moi.
la source
Vous pouvez le faire sans interface.
utilisez l'
?
opérateur comme paramètre facultatif.la source
message
etautoHideAfter