Я получаю следующую ошибку в моих журналах ng serve, хотя функция работает без проблем. Это станет проблемой, хотя, когда я собираюсь для производства. Как я могу исправить эту ошибку?
uuidv4() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
}
В моем сервисе я назвал это this.uuidv4() для генерации уникального идентификатора.
Хорошо, я понимаю, что он делает сейчас. Этот код [1e7]+-1e3+-4e3+-8e3+-1e11
использует преимущество приведения типа оператора сложения. Например, []+0
возвращает "0"
а [1]-1
возвращает "1-1"
. Он работает в JavaScript, потому что, но TypeScript предупреждает вас об этом, потому что этот вид кода обычно является результатом опечатки или логической ошибки.
Таким образом, это выражение - всего лишь немного кода для "10000000-1000-4000-8000-100000000000"
. Просто замените это выражение значением результата в вашем коде следующим образом:
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
[1e7]+-1e3
почему вы используете здесь скобку?[1e7]+-1e3+-4e3+-8e3+-1e11
?[1e7]
- это массив,-1e3+...
- это число, а затем вы вызываетеreplace
которого нет в массивах или числах. Ты хотел, чтобы все это было струной?