Typescript: O operador '+' não pode ser aplicado aos tipos 'número []' e '-1000'

Criado em 12 set. 2017  ·  1Comentário  ·  Fonte: microsoft/TypeScript

Tem uma função aqui:
https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
E TS diz que há um erro, não tenho certeza se é verdade.
E no caso de não ser um erro, mas ts conta isso como erro - existe alguma maneira de @suppress isso?
Obrigado.

Versão do TypeScript: 2.3.2 / mas o mesmo no playground: https://www.typescriptlang.org/play/index.html

Código

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

Comportamento esperado:
Sem erro?
Comportamento real:
Operator '+' cannot be applied to types 'number[]' and '-1000'.

Question

Comentários muito úteis

Este não é um fórum de suporte.

As perguntas devem ser feitas em StackOverflow ou em Gitter.im .

Mas ... o TypeScript está protegendo você de coerção implícita, então você precisa converter o literal de array :

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

>Todos os comentários

Este não é um fórum de suporte.

As perguntas devem ser feitas em StackOverflow ou em Gitter.im .

Mas ... o TypeScript está protegendo você de coerção implícita, então você precisa converter o literal de array :

  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)
    )
  }
Esta página foi útil?
0 / 5 - 0 avaliações