构造函数重载的打字稿智能感知问题

typescript intellisense issue for constructor overload

我正在尝试用打字稿写一个插件。我这样声明了一个接口:

interface Options {
  options1: string,
  options2: number,
  options3: boolean,
  ...
}

而且,我将它用作此导出 class 可能采用并重载它的选项:

export class MyClass {
    constructor(public options: Options = {} as Options) {
        // options which can be overload
        let {
            /* default options: */
            option1 = 'option1',
            option2 = 2,
            option3 = true,
            ...
        }: Options = options as Options;
        // overload
        this.options.option1 = option1;
        this.options.option2 = option2;
        this.options.option3 = option3;
    }
}

终于实例化了

const class1 = new MyClass({
    ...
})

我正在使用 vscode 作为我的编辑器。智能感知只给我这样的提示对我来说没有意义:

MyClass(options?: Options)

我觉得应该是这样的:

MyClass(options?: {options1: string, options2: number ... })

有人知道为什么会这样吗,以及如何使智能感知按预期工作?

TypeScript 跟踪此问题时出现问题。 But one issue with this approach is when the option is long, it does not give you the full detail anyway.

它现在实际上工作得很好。你可以做的是:

const class1 = new MyClass({
  // [Ctrl+space] here
})

它实际上会使用 IntelliSense 列出选项属性 option1option2 等。