【发布时间】:2017-05-04 14:01:42
【问题描述】:
我正在使用以下打字稿方法来生成UUIDs。代码本身基本上就是这个stackoverflow answer的打字稿版本。
generateUUID(): string {
let date = new Date().getTime();
if (window.performance && typeof window.performance.now === 'function') {
date += performance.now();
}
let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
let r = (date + Math.random() * 16) % 16 | 0;
date = Math.floor(date / 16);
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
};
我们的开发团队使用TSLint 来保持代码干净,并且我们有一条规则禁止使用bitwise operators。我不知道如何在不损害 UUID 生成器的加密方面的情况下重写此代码。这段代码怎么可能改写,或者这根本没有意义?
【问题讨论】:
-
为什么你有一个禁止按位运算符的规则?这很奇怪。
-
我也觉得这很奇怪,但这不是我的决定。
-
TSLint 规则是错误。不是代码
-
将其包装在:
/* tslint:disable */和/* tslint:enable */(或者更具体地了解我们“接受”的规则,请参阅 palantir.github.io/tslint/usage/rule-flags) -
添加一点背景知识:在 javascript 中通常不鼓励使用位运算符,因为它们可能与逻辑运算符混淆。考虑
1 && 1 === 1和1 & 1 === 0。
标签: javascript typescript uuid lint tslint