web-dev-qa-db-fra.com

Type de flux, que signifie le symbole «+» devant une propriété?

Je suis tombé sur le code suivant écrit en js FlowType (je suis intéressé de connaître la valeur de + dans le contexte de FlowType pas en général JS).

Pourriez-vous s'il vous plaît m'expliquer ce que le + symbole signifie devant la propriété dans le code ci-dessous:

  export type User = {
      +name: string,
      +surname: string,
      +personId: PourceId,
    }

Je n'ai trouvé aucune référence dans la documentation, tout lien est également le bienvenu.

27
GibboK

Le + le symbole devant la propriété signifie que la propriété est en lecture seule

Référence: https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

37
MichaelDeBoey

Le symbole ' + ' signifie que la propriété est en lecture seule et
' - ' signifie que la propriété est en écriture seule et
Si n'a pas de '+' ou '-' symbole, cela signifie que la propriété a les deux accès en lecture/écriture .
Il peut être utilisé lors de la définition d'une propriété d'interface ou d'une propriété de type.

La documentation peut être trouvée dans le lien ci-dessous:
https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

6
kalimsayyad

Après quelques recherches supplémentaires, j'ai découvert que +/- indique la covariante ou la contravariante d'une propriété.

interface MyInterface {
  +covariant: number;     // read-only
  -contravariant: number; // write-only
}

Article intéressant sur la variance:

https://flow.org/en/docs/lang/variance/

https://flow.org/en/docs/types/interfaces/#toc-interface-property-variance-read-only-and-write-only

3
GibboK