93 votes

Type : Les types de propagation ne peuvent être créés qu'à partir de types d'objets

<pre><code></code><p><p>Le code ci-dessus ne devrait-il pas fonctionner? Et comment puis-je le réparer si possible?</p></pre>

137voto

jmattheis Points 5406

C'est corrigé dans la Production de la Version 3.2. Voir Les Notes De Version.


Ressemble à avec la propagation d'un type générique n'est pas encore pris en charge, mais il y a un GitHub question à ce sujet: Microsoft/fichier d'enregistrement#10727.

Pour l'instant, vous pouvez soit utiliser l'assertion de type comme @Jevgeni a commenté:

function foo<T extends object>(t: T): T {
  return { ...(t as object) } as T;
}

ou vous pouvez utiliser Object.assign qui a bon définitions de type.

function foo<T extends object>(t: T): T {
  return Object.assign({}, t);
}

40voto

Muhammad Mabrouk Points 127
foo((data) => {
  return {
    ...data as {}
  }
}

10voto

devilmaster Points 439

La Version 3.2 de Tapuscrit corrigé cela. Les deux PRs que l'amélioration de la gestion de la propagation et de repos paramètres sont les suivants:

Vous pouvez l'essayer dès maintenant en utilisant npm install typescript@3.2.

Avec 3,2 votre code fonctionne comme est.

La Version 3.2 a été publié le 29 novembre 2018, vous pouvez en lire plus à ce sujet ici.

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