IntelliJ:自动完成对象作为函数参数

时间:2015-03-17 21:05:27

标签: javascript intellij-idea typescript code-completion nashorn

我使用IntelliJ IDEA作为开发的IDE,也涉及JavaScript开发。我的基本目标是通过以下方式使用我自己的"库"在IDE中进行代码完成工作。确切地说,"库"是Nashorn委托对Java的特殊调用。我目前正在评估TypeScript和DefinitelyTyped是否可以解决我的代码完成问题。

我有一个我想要调用的函数如下:

obj.func("", false, {
    xyz: "",
    abf: "",
    f7d: 17.5,
    cccts: true
});

详细参数仅是示例。请注意,一个参数是一个JavaScript对象,它有一大堆已定义但不易记忆的属性。 我希望IDE不仅代码完成函数,还需要代码完成内部对象中可能的属性

我尝试使用TypeScript,如下所示:

function func(
    p1:string,
    p2?:boolean,
    p3?:{
        xyz: string;
        abf: string;
        f7d: number;
        cccts: boolean;
    }
):void;

这很有效,因为IDE告诉我函数名称是什么,它期望什么参数以及需要什么类型。 然而,在输入p3的左大括号后,我得到没有进一步的代码完成应该或可以插入对象。我甚至可以键入类似" ccc"的内容,但IDE无需再自动完成了。 我在TypeScript中写下了整个签名 - 所以我要么以错误的方式写下信息,要么IDE不会像我期望的那样使用它。

到目前为止我的知识 - 你们中的任何人都可以告诉我,如何让IntelliJ IDEA自动完成这个对象属性?我希望如此!

最好的祝福和感谢, 丹尼斯

1 个答案:

答案 0 :(得分:0)

intellisence正确显示在操场上和atom-typescript:

之类的东西

enter image description here

IntelliJ使用语言服务的自己的实现。这有其正面(更多)和负面(例如在你给出的例子中更少)。解决方案是使用JetBrains引发错误并等待释放(相当快)。