Typescript: Der Operator '+' kann nicht auf die Typen 'number []' und '-1000' angewendet werden.

Erstellt am 12. Sept. 2017  ·  1Kommentar  ·  Quelle: microsoft/TypeScript

Habe eine Funktion von hier:
https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
Und TS sagt, dass es einen Fehler gibt, nicht sicher, ob er wahr ist.
Und falls dies kein Fehler ist, aber ts dies als Fehler zählt - gibt es eine Möglichkeit, ihn zu unterdrücken ?
Vielen Dank.

TypeScript-Version: 2.3.2 / aber auf dem Spielplatz gleich: 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)
    )
  }

Erwartetes Verhalten:
Kein Fehler?
Tatsächliches Verhalten:
Operator '+' cannot be applied to types 'number[]' and '-1000'.

Question

Hilfreichster Kommentar

Dies ist kein Support-Forum.

Fragen sollten bei StackOverflow oder auf Gitter.im gestellt werden .

Aber ... TypeScript schützt Sie vor implizitem Zwang, daher müssen Sie das Array-Literal umwandeln :

  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)
    )
  }

>Alle Kommentare

Dies ist kein Support-Forum.

Fragen sollten bei StackOverflow oder auf Gitter.im gestellt werden .

Aber ... TypeScript schützt Sie vor implizitem Zwang, daher müssen Sie das Array-Literal umwandeln :

  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)
    )
  }
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen