我正在尝试用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按预期工作?
答案 0 :(得分:1)
TypeScript跟踪此问题。但是这种方法的一个问题是当选项很长时,它无论如何都不会给你完整的细节。
现在实际上工作得很好。你能做的是:
const class1 = new MyClass({
// [Ctrl+space] here
})
它实际上会列出具有IntelliSense的选项属性option1
,option2
等。