🪪 Using TypeScript's In-Built Uuid Generator
TypeScript's randomUUID function and Uuid type make it easy to generate and work with UUIDs in code, improving readability and reducing the risk of bugs.
Introduction
In this post, we’ll be exploring how randomUUID
function and the
Uuid
type can be used to generate and work with UUIDs (Universally
Unique Identifiers) in a TypeScript project. UUIDs are often used to
uniquely identify resources, such as database records or network
sockets, and the randomUUID
function and Uuid
type make it easy to
generate and work with them in TypeScript.
Code/TLDR
export function NewUuid() {
return crypto.randomUUID() as Uuid;
}
export type Uuid = string & {
[TYPE: symbol]: 'Uuid';
};
export function NewUuid() {
return crypto.randomUUID() as Uuid;
}
export type Uuid = string & {
[TYPE: symbol]: 'Uuid';
};
The NewUuid
function uses the crypto.randomUUID()
function to
generate a random UUID and returns it as a value of type Uuid
. The
Uuid
type is a custom string type that is defined with a symbol
property to indicate that it is a UUID. This allows you to type-check
UUIDs in your code to ensure that they are being used correctly.
Type-Safety
The purpose of the Uuid
type is to provide a type annotation for
UUIDs in the code, which can make the code easier to read and
understand. It can also help catch potential bugs by providing type
checking. For example, if a developer tries to assign a value that is
not a UUID to a variable with the type Uuid
, the TypeScript compiler
will throw an error.
// A function that expects a Uuid as an argument:
function deleteUser(userId: Uuid) {
// 🗑️ Delete User Code
}
// 🙅 Incorrect usage:
// This will cause a TypeScript error, because '123' is not a Uuid
deleteUser('123');
// 👍 Correct usage:
// This is valid, because userId has the type Uuid
const userId = NewUuid();
deleteUser(userId);
// A function that expects a Uuid as an argument:
function deleteUser(userId: Uuid) {
// 🗑️ Delete User Code
}
// 🙅 Incorrect usage:
// This will cause a TypeScript error, because '123' is not a Uuid
deleteUser('123');
// 👍 Correct usage:
// This is valid, because userId has the type Uuid
const userId = NewUuid();
deleteUser(userId);
In this example, the deleteUser()
function expects a Uuid
as its
argument. When the userId
variable, which has the type Uuid
, is
passed as an argument, the code is valid and no errors are thrown.
However, if a regular string value is passed as an argument, the
TypeScript compiler will throw an error, because the regular string
value is not considered a valid Uuid
.
Conclusion
In conclusion, the randomUUID
function and the Uuid
type are
powerful tools for generating and working with UUIDs in TypeScript. By
using the randomUUID
function, you can easily generate new UUIDs in
your code, and by using the Uuid
type, you can improve the
readability and maintainability of your code. Whether you are working
with databases, network sockets, or any other resources that require
unique identifiers, the randomUUID
function and Uuid
type can help
you get the job done.