mirror of
https://github.com/xHyroM/roles-bot.git
synced 2024-11-24 09:11:05 +01:00
28 lines
626 B
TypeScript
28 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
|
||
|
);
|
||
|
}
|