tests/cases/conformance/jsdoc/bug25127.js(27,13): error TS2684: The 'this' context of type 'Entry | Group' is not assignable to method's 'this' of type 'Entry'.
  Property 'c' is missing in type 'Group' but required in type 'Entry'.


==== tests/cases/conformance/jsdoc/bug25127.js (1 errors) ====
    class Entry {
        constructor() {
            this.c = 1
        }
        /**
         * @param {any} x
         * @return {this is Entry}
         */
        isInit(x) {
            return true
        }
    }
    class Group {
        constructor() {
            this.d = 'no'
        }
        /**
         * @param {any} x
         * @return {false}
         */
        isInit(x) {
            return false
        }
    }
    /** @param {Entry | Group} chunk */
    function f(chunk) {
        let x = chunk.isInit(chunk) ? chunk.c : chunk.d
                ~~~~~
!!! error TS2684: The 'this' context of type 'Entry | Group' is not assignable to method's 'this' of type 'Entry'.
!!! error TS2684:   Property 'c' is missing in type 'Group' but required in type 'Entry'.
!!! related TS2728 tests/cases/conformance/jsdoc/bug25127.js:3:9: 'c' is declared here.
        return x
    }
    
    /**
     * @param {any} value
     * @return {value is boolean}
     */
    function isBoolean(value) {
        return typeof value === "boolean";
    }
    
    /** @param {boolean | number} val */
    function foo(val) {
        if (isBoolean(val)) {
            val;
        }
    }
    
    /**
     * @callback Cb
     * @param {unknown} x
     * @return {x is number}
     */
    
    /** @type {Cb} */
    function isNumber(x) { return typeof x === "number" }
    
    /** @param {unknown} x */
    function g(x) {
        if (isNumber(x)) {
            x * 2;
        }
    }
    