2016-12-19 1 views
0

Ich verwende die folgende Typoskript-Methode, um UUID s zu generieren. Der Code selbst ist im Grunde die Typoskript-Version dieser stackoverflow answer. Alternative zu bitweisen Operatoren bei der UUID-Erstellung

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

Unser Entwicklungsteam nutzt TSLint den Code sauber zu halten, und wir haben eine Regel, die bitwise operators zu verwenden verbietet. Ich habe keine Ahnung, wie ich diesen Code umschreiben kann, ohne den kryptographischen Aspekt des UUID-Generators zu beeinträchtigen. Wie kann dieses Stück Code neu geschrieben werden oder macht das überhaupt keinen Sinn?

+3

Warum in aller Welt haben Sie eine Regel, die bitweise Operatoren verbietet? Das ist komisch. – Pointy

+0

Ich denke, es ist auch komisch, aber das war nicht meine Entscheidung. –

+1

Die TSLint-Regel ist der Fehler. Nicht den Code – slebetman

Antwort

3

Der Grund dafür ist, dass es wahrscheinlicher ist, versehentlich einen bitweisen Operator zum Beispiel in einer if-Anweisung zu verwenden, als einen absichtlich zu verwenden.

Es sollte ziemlich akzeptabel sein, TSLint zu sagen, dass Sie wirklich gemeint sind, um einen bitweisen Operator zu verwenden. Wickeln Sie sie einfach in spezielle TSLint-Kommentare. :

/* tslint:disable:no-bitwise */ 

// Your code... 

/* tslint:enable:no-bitwise */ 
Verwandte Themen