构造函数重载的typescript intellisense问题

时间:2017-03-13 05:04:00

标签: typescript visual-studio-code typescript-typings typescript2.0

我正在尝试用typescript编写一个插件。我声明了这样的界面:

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

而且,我使用它作为此导出类可能采取的选项并使其超载:

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作为我的编辑器。对我来说,intellisense只给我这样的提示是没有意义的:

  

MyClass(选项?:选项)

我认为应该是这样的:

  

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

任何人都知道为什么会发生这种情况,以及如何让intellisense按预期工作?

1 个答案:

答案 0 :(得分:1)

TypeScript跟踪此问题。但是这种方法的一个问题是当选项很长时,它无论如何都不会给你完整的细节。

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

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

它实际上会列出具有IntelliSense的选项属性option1option2等。