roles-bot/packages/builders/src/util/Equatable.ts
xHyroM ddd862f7af
feat: add builders
fork of @discordjs/builders

why?

because djs must use their SHAPESHIFT and other useless things in packages so, yep...

this will be moved into rylen
2023-04-08 10:55:26 +02:00

27 lines
626 B
TypeScript

/**
* Represents a structure that can be checked against another
* given structure for equality
*
* @typeParam T - The type of object to compare the current object to
*/
export interface Equatable<T> {
/**
* Whether or not this is equal to another structure
*/
equals(other: T): boolean;
}
/**
* Indicates if an object is equatable or not.
*
* @param maybeEquatable - The object to check against
*/
export function isEquatable(
maybeEquatable: unknown,
): maybeEquatable is Equatable<unknown> {
return (
maybeEquatable !== null &&
typeof maybeEquatable === "object" &&
"equals" in maybeEquatable
);
}