Visual Studio Javascript Intellisense - 选项对象

Posted

技术标签:

【中文标题】Visual Studio Javascript Intellisense - 选项对象【英文标题】:Visual Studio Javascript Intellisense - options object 【发布时间】:2013-02-09 10:16:56 【问题描述】:

我想在 Visual Studio 中为我在方法调用中使用的选项对象获得 Intellisense 支持。

javascript 中使用包罗万象的选项对象来配置对函数的调用是很常见的——例如 jquery 的 Ajax 调用使用:

$.ajax(settings);

设置只是一个对象,例如:

$.ajax(
    url: '/blah',
    data:  stuff: 1 ,
    method: 'POST',
    // etc
);

虽然它是一个隐式对象,但属性遵循特定的类。通常,当您有类似这样的东西对 Intellisense/描述代码很重要但对代码工作不重要时,您可以将它放在 -vsdoc.js 文件中。但是如何让 Intellisense 为这个对象提供信息呢?

我以jquery-vsdoc.js 为例,因为它是由 Microsoft 提供的,但无济于事。在一种情况下,他们只是将其键入为“对象”,而在另一种情况下,他们根本不记录它。

例如,我在 fillTable.js 中尝试过:

function fillTable(options) 
    /// <param name="options" type="FillTableOptions">Options to fill table</param>

并且在fillTable-vsdoc.js中:

function FillTableOptions() 
    /// <field type="String">Id property</field>
    this.idProp = 'Id';

但是对于 Intellisense,我得到的只是类型是 FillTableOptions - 当我创建对象时,在选择属性时我没有得到 Intellisense 帮助。

那么,如何获得对此类对象属性的 Intellisense 支持?

【问题讨论】:

【参考方案1】:

我不知道有什么方法可以在 TypeScript 之外获得对对象参数的 true Intellisense 支持...但是,您可以在一定程度上格式化参数文档节点。

例如,您可以在“类型”属性中输入您喜欢的任何文本,只要它是连续的文本块(不包含任何空格或中断字符)。

例如。 1:自定义类型注解。

function where(collection, evaluator) 
    /// <summary>
    /// Equivalent to a WHERE clause.
    /// </summary>
    /// <param name="collection" type="array||object">Accepts an array or associative array (object).</param>
    /// <param name="evaluator" type="function(key,value,index)">Applied to each element of the @collection to determine which elements to return.</param>
    /// <returns type="array||object" />

例如。 2:多行参数文档(&amp;#10;是新行)。

function modal(options) 
    /// <summary>
    /// Displays a modal window.
    /// </summary>
    /// <param name="options" type="object||string">
    /// &#10;If a string is passed in, will be treated as @heading.
    /// &#10;
    /// &#10;* heading string The heading text.
    /// &#10;? content string The text content; overridden by @htmlContent.
    /// &#10;? htmlContent string Use when HTML content is desired; overrides @content.
    /// &#10;? settings object FancyBox.js settings.
    /// </param>

这不会像 TypeScript 那样为您提供真正的对象参数智能感知,但它可以让您更好地控制 cmets 的样式,并有助于减少歧义。

【讨论】:

以上是关于Visual Studio Javascript Intellisense - 选项对象的主要内容,如果未能解决你的问题,请参考以下文章

javascript Visual Studio代码配置

javascript Visual Studio代码设置

Visual Studio Javascript扩展功能比较

Visual Studio 性能分析:JavaScript

Visual Studio 中的 javascript 智能感知

Visual Studio 2013 无法识别 javascript [关闭]