TypeScript icon indicating copy to clipboard operation
TypeScript copied to clipboard

fix(51374): ts(80004): Quick fix... > Annotate with type from JSDoc :: object types

Open a-tarasyuk opened this issue 2 years ago • 2 comments

Fixes #51374

a-tarasyuk avatar Nov 01 '22 21:11 a-tarasyuk

What is the behavior for something like this?

////class C {
////    /**
////     * @private
////     * @param {number} foo
////     * @param {Object} [bar]
////     * @param {String} bar.a
////     * @param {Object} [baz]
////     * @param {number} baz.c
////     */
////    m(foo, bar, baz) { }
////}

DanielRosenwasser avatar Nov 01 '22 22:11 DanielRosenwasser

@DanielRosenwasser The result looks like this

class C {
    /**
     * @private
     * @param {number} foo
     * @param {Object} [bar]
     * @param {String} bar.a
     * @param {Object} [baz]
     * @param {number} baz.c
     */
    m(foo: number, bar: { a: string; }, baz: { c: number; }) { }
}

a-tarasyuk avatar Nov 02 '22 07:11 a-tarasyuk

For future reference, I also checked that this works for nested JSDoc param tags, like so:

class E {
    /**
     * @private
     * @param {Object} [bar]
     * @param {Object} bar.a
     * @param {String} [bar.a.b]
     */
    m(bar) { }
}

But not sure if it warrants adding such a test, seems unlikely we'd regress on that.

gabritto avatar Nov 04 '22 20:11 gabritto

@gabritto Thanks for the feedback and +1 use case. I've added a test to cover it.

a-tarasyuk avatar Nov 04 '22 20:11 a-tarasyuk