【问题标题】:Intellisense on object using special comments使用特殊注释对对象进行智能感知
【发布时间】:2018-05-28 16:29:33
【问题描述】:

在 Sublime 或 VS Code 中,您可以定义一个特殊的注释(例如 DocBlockrJSDocs),Intellisense 将识别并为您提供智能工具提示功能。

我有一个带有选项参数的函数。这是一个对象,可以有几个属性,可以包含函数、字符串、整数等。一个例子是:

function foo(options){
    options = options || {};

    if(options.foo){
        console.log(options.foo);
    }
    if(options.bar) {
        console.log(options.bar());
    }
}
foo({foo: 'foo', bar: function(){return 'bar';}});

我可以添加一个 DocBlockr 注释,但这只会产生一个工具提示,表明它需要一个对象。

是否可以对该选项对象进行某种定义,以便使用智能感知弹出?

【问题讨论】:

    标签: javascript visual-studio-code sublimetext3 intellisense jsdoc


    【解决方案1】:

    对于 Sublime Text 3,您可以使用我的 JavaScript Enhancement 插件(您也可以在 Package Control 上找到它)将它变成一个 JavaScript IDE(它使用 Flow 在兜帽)。在你的情况下,使用Flow type annotations,你可以使用这个代码来得到你想要的:

    //@flow
    
    function foo(options /*: { foo: string, bar: function} */){
        options = options || {};
    
        if(options.foo){
            console.log(options.foo);
        }    
        if(options.bar) {
            console.log(options.bar());
        }
    }
    
    foo()
    

    因此,在 Sublime Text 3 编辑器中,您将得到如下内容:

    也在多行(/* :需要在参数的同一行):

    此外,该插件不仅提供智能 javascript 自动完成功能,还提供许多有关创建、开发和管理 javascript 项目的功能(实时错误、代码重构等)。

    【讨论】:

    • 这看起来太棒了!但是,有没有办法让函数上面的定义使用多行?我的选项对象可能很大
    • 是的!我已经用新的屏幕截图更新了我的答案。您可以在 Flow 网站上查看所有可能的方式。
    • 哇!非常感谢!我一定会试一试的。你有 VS Code 移植的计划吗?
    • 已经有这个plugin 在 VS Code 中启用对 Flow 的支持。我的主要目标是为 Sublime Text 3 提供类似 JavaScript IDE 的功能,因为与其他编辑器(Atom 和 VSCode 基于 Electron)相比,它非常快(如果我是对的,它是用 C++ 编写的),但它缺乏很多功能,所以这就是为什么我专注于 Sublime Text 3 :)
    • 感谢您的解释,太棒了!继续努力:)
    猜你喜欢
    • 2016-10-26
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2021-09-02
    • 1970-01-01
    相关资源
    最近更新 更多