JSFiddle - React, Tailwind, and code Playground

JavaScript

class Base {
    static get type() {
        return 'Base';
    }
}

class Derived extends Base {
}

class Derived2 extends Base {
}

var t = new Derived();

/**
 * @template {typeof Base} T
 * @param {T} cl
 * @returns {T}
 */
function checkTop( cl ) {
    if ( t instanceof cl ) {
        return t;
    }
    return undefined;
}

// typeof Derived
let d1 = checkTop( Derived );

// typeof Derived2
let d2 = checkTop( Derived2 );