4 votes

Ne pas autoriser l'utilisation de clés inexistantes pour un type de flux donné.

Étant donné cet objet simple : { id: 'x', value: 1 } en TypeScript si vous essayez de le faire :

type foo = {
    id: string,
    v: number,
};

const bar: foo = { id: 'something', v: 1111 };

// refrencing non existent key
if (bar.xyz) {
    console.log('xyz'); 
}

vous obtiendrez une erreur disant xyz does not exist on foo . Comment obtenir le même résultat sur Flowjs ?

J'ai essayé ce qui suit, mais Flowjs n'envoie pas d'erreur :

type foo = {|
    id: string,
    v: number,
|};

const bar: foo = { id: 'something', v: 1111 };

if (bar.xyz) { // no errors
    console.log('xyz');
}

1voto

artgb Points 2519

Votre problème existe toujours en tant que question ouverte. https://github.com/facebook/flow/issues/106

Tant que cette question est ouverte, vous pouvez effectuer une conversion de type par la force. bar.xyz en booléen.

if (Boolean(bar.xyz))

Vous obtiendrez cette erreur.

10 : if (Boolean(bar.xyz)) { ^ propriété xyz . Propriété non trouvée dans

10 : if (Boolean(bar.xyz)) { ^ type d'objet

0voto

Ryan Cavanaugh Points 17393

Le flux permet toujours de vérifier les propriétés dans if s. Vous pouvez utiliser cette solution comme solution de rechange :

if (!!bar.xyz == true) {

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X