I am trying to a JSDocs for the isEqual(object1: T, object2: T)
but I am getting a warning: The type ‘T’ is undefined .eslintjsdoc/no-undefined-types.
How can I fix this eslint warning here?
/**
* isEqual - Check if two objects are equal
* @param {T} object1 - Object 1
* @param {T} object2 - Object 2
* @returns {boolean} - True if objects are equal
*/
export function isEqual<T>(object1: T, object2: T): boolean {
if (!isObject(object1) || !isObject(object2)) {
return object1 === object2;
}
const keys1 = Object.keys(object1) as Array<keyof typeof object1>;
const keys2 = Object.keys(object2) as Array<keyof typeof object2>;
if (keys1.length !== keys2.length) {
return false;
}
for (const key of keys1) {
const val1 = object1[key];
const val2 = object2[key];
const areObjects = isObject(val1) && isObject(val2);
if ((areObjects && !isEqual(val1, val2)) || (!areObjects && val1 !== val2)) {
return false;
}
}
return true;
}
/**
* isObject - Check if value is an object
* @param {unknown} value - Value to check
* @returns {boolean} - True if value is an object
*/
function isObject(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null;
}