Using Parameters in a class member function gets incorrect result while all parameters are optional. · Issue #53541 · microsoft/TypeScript (original) (raw)

Bug Report

🔎 Search Terms

🕗 Version & Regression Information

5.0.2 and 4.9.5

https://www.typescriptlang.org/play?ts=5.0.2&ssl=15&ssc=1&pln=16&pc=1#code/FAYwNghgzlAEAqsDexZtgeg7AZgOwAoBKALlgDcB7ASwBMBuVdLXQ2PCAWwFMB+MqABcATtTwBzWKQo0GTNPgLsufASLHiANLCjcAHv3YBXTgCNuwqWSp1kAX2APgoSDFgBZADwANWPsHceLRw8AB8yPKwIJR4QsJGIIKUwkoADkamYNQgsJxkvkT2zuisSgB0FRDC4lBkAApVKgHCUD4A2gDk+B2wALrhhSglJYIAFtRQZZxlirAVZVU1UowlDk44RniJ1DGsAEzlldW1sA3CTRat8G2wXXg9-VIRJXjcAO4IxDNs84twRIw7EA

Playground link with relevant code

💻 Code

class T { // fn(): void; // fn( name?: string ): void; fn( name?: string, sex?: number ): void {} }

class M { constructor( public m: X ) {}

fn( ...args: Parameters<X['fn' ]> ) {
    this.m.fn( ...args );
}

}

function fn2( ...args: Parameters<T[ 'fn' ]> ) { new T().fn( ...args ); }

🙁 Actual behavior

image

The fn method in class M has similar code with the global function fn2, but it get errors.

The error message disappears if I add function overload ( uncomment line 3 & 4 in playground ).

🙂 Expected behavior