0
votes

Valeurs par défaut avec interface dans la fonction arrow (Typescript, React)

Cette question est spécifique aux fonctions arrow. Est-il possible d'inclure les valeurs par défaut à côté d'une interface dans les paramètres de fonction et sans recourir à objet.Assign ()?

interface Props {
  someBoolean?: boolean;
  anotherBoolean?: boolean;
  children: any;
}

const DefaultValues = {
  someBoolean: false,
  anotherBoolean: false,
}

export const StackOverflow: React.FC<Props> = (_props: Props) => {
  const props = Object.assign({}, _props, DefaultValues);

  return <React.Fragment>{props.children}</React.Fragment>;
};


2 commentaires

Conspensign = Object.Assign ({}, _Props, DefaultValues); ne semble pas correct. DefaultValues ​​ écrasera chaque accessoire existant dans _props . Devrait changer la commande à objet.Assign ({}, défaitevalues, _props);


Ah oui, merci pour la correction.


3 Réponses :


0
votes

réponse est non. Vous ne pouvez pas ajouter de valeur par défaut à une interface ou type

Mais vous pouvez faire quelque chose comme ça. xxx


0 commentaires

1
votes

iff vous n'avez pas besoin defaultValues ​​ ailleurs et vous n'avez pas besoin de pouvoir se référer à (tous les) accessoires dans le corps de votre fonction, Ensuite, oui: xxx


3 commentaires

En fait, vous pouvez faire référence à des accessoires à l'aide de propriétés propres {quelqueboolcan = false, autreboolcan = false, enfants = [], ... accessoires}


@Seanvieira Merci de votre réponse. Pourriez-vous expliquer pourquoi vous utilisez l'interface pour réact.fc mais pas dans la configuration du paramètre, comme celui-ci ({quelquebooleran = false, ... supplémentaireProps}: accessoires) ?


Parce que le type de réact.fc approximates t => réactiletypes et si une fonction Définition correspond à cette signature de type il doit Soit être () => réactiletypes (prendre des arguments) ou prendre un seul argument du type t . Et si l'argument doit être t , il n'y a pas de point (dans mon esprit) de dire la même chose deux fois. ("La variable stackoverflow est une fonction de myPropType à élément , à laquelle nous affectons une fonction qui prend un myPropType et renvoie élément ", vs." La variable stackoverflow est une fonction de myProptype à élément ").



1
votes

Vous pouvez fournir les valeurs par défaut de manière fonctionnelle, en composant votre composant. XXX PRE>

Utilisation: P>

const StackOverflowWithDefaults = withDefaults(StackOverflow, { someBoolean: false, anotherBoolean: false });

<StackOverflowWithDefaults>
  The only prop I need to provide is children
</StackOverflowWithDefaults>


0 commentaires