4 votes

Quelle est la différence entre `MyInterfaceOne[] | MyInterfaceTwo[]` et `(MyInterfaceOne|MyInterfaceTwo)[]`.

Lorsque vous utilisez MyInterfaceOne[] | MyInterfaceTwo[] J'obtiens une erreur Typescript à un autre endroit de mon code, ce qui n'a aucun sens pour moi.

myInterfaces = funcWithAboveSignature()

return myInterfaces.reduce(async (acc, interfaceType) => {
    await acc;
    if (interfaceType.prop) {
      return await someAsyncFunc(interfaceType);
    } else {
      return await someOtherAsyncFunc(interfaceType);
    }
  }, Promise.resolve());

L'erreur dit :

Argument of type '(acc: MyInterfaceOne, raw: MyInterfaceOne) => Promise<void>' is not assignable to parameter of type '(previousValue: MyInterfaceOne, currentValue: MyInterfaceOne, currentIndex: number, array: MyInterfaceOne[]) => MyInterfaceOne'.

Mais en changeant la signature de la fonction de MyInterfaceOne[] | MyInterfaceTwo[] a (MyInterfaceOne|MyInterfaceTwo)[] cela fonctionne.

Quelqu'un peut-il m'expliquer la différence entre les deux ?

5voto

korulis Points 177
MyInterfaceOne[] | MyInterfaceTwo[]

dit qu'il peut être soit un tableau de seulement MonInterfaceOne ou un tableau de seulement MonInterfaceTwo.

(MyInterfaceOne|MyInterfaceTwo)[]

dit qu'il peut être un tableau de MonInterfaceOne ou MonInterfaceTwo, donc il peut contenir des éléments de n'importe lequel des deux types.

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