// Copyright 2017-2025 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Class } from '../types.js';
import { isClass } from './class.js';
/**
* @name isChildClass
* @summary Tests if the child extends the parent Class
* @description
* Checks to see if the child Class extends the parent Class
* @example
*
*
* ```javascript
* import { isChildClass } from '@pezkuwi/util';
*
* console.log('isChildClass', isChildClass(BN, BN); // => true
* console.log('isChildClass', isChildClass(BN, Uint8Array); // => false
* ```
*/
export function isChildClass
(Parent: P, Child?: unknown): Child is P { // https://stackoverflow.com/questions/30993434/check-if-a-constructor-inherits-another-in-es6/30993664 return isClass(Child) && isClass(Parent) // eslint-disable-next-line no-prototype-builtins ? Parent === Child || Parent.isPrototypeOf(Child) : false; }