Typescript: L'opérateur «+» ne peut pas être appliqué aux types «nombre []» et «-1000»

Créé le 12 sept. 2017  ·  1Commentaire  ·  Source: microsoft/TypeScript

Vous avez une fonction d'ici:
https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
Et TS dit qu'il y a une erreur, je ne sais pas si c'est vrai.
Et au cas où ce ne serait pas une erreur, mais ts le considère comme une erreur - y a-t-il un moyen de le
Merci.

Version TypeScript: 2.3.2 / mais même dans le terrain de jeu: https://www.typescriptlang.org/play/index.html

Code

  function uuidv4()
  {
    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
      (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    )
  }

Comportement prévisible:
Pas d'erreur?
Comportement réel:
Operator '+' cannot be applied to types 'number[]' and '-1000'.

Question

Commentaire le plus utile

Ce n'est pas un forum de support.

Les questions doivent être posées sur StackOverflow ou sur Gitter.im .

Mais ... TypeScript vous protège de la coercition implicite, vous devez donc convertir le littéral du tableau :

  function uuidv4()
  {
-    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
+    return ([1e7] as any + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
      (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    )
  }

>Tous les commentaires

Ce n'est pas un forum de support.

Les questions doivent être posées sur StackOverflow ou sur Gitter.im .

Mais ... TypeScript vous protège de la coercition implicite, vous devez donc convertir le littéral du tableau :

  function uuidv4()
  {
-    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
+    return ([1e7] as any + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
      (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    )
  }
Cette page vous a été utile?
0 / 5 - 0 notes