ค้นหาเว็บไซต์

javascript - ทางเลือกแทนตัวดำเนินการบิตในสร้าง uuid


ฉันกำลังใช้เมธอด TypeScript ต่อไปนี้เพื่อสร้าง UUID โค้ดตัวมันเองก็เป็นเวอร์ชัน TypeScript ของคำตอบใน Stack Overflow นี้

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 โค้ดชิ้นนี้สามารถเขียนใหม่ได้อย่างไร หรือมันไม่มีความหมายเลย?

คำตอบ #1

เหตุผลที่ TSLint เน้นจุดนี้คือมีแนวโน้มว่าผู้ใช้ได้ใช้ตัวดำเนินการแบบบิตโดยไม่ตั้งใจ (เช่น ในคำสั่ง if) มากกว่าจะใช้มันโดยตั้งใจ

มันควรจะยอมรับได้มากที่จะบอก TSLint ว่าคุณ ตั้งใจจริงๆ ที่จะใช้ตัวดำเนินการแบบบิต แค่ห่อพวกมันในคอมเมนต์พิเศษของ TSLint :

/* tslint:disable:no-bitwise */

// Your code...

/* tslint:enable:no-bitwise */

บทความที่เกี่ยวข้อง