【问题标题】:Javascript /// <field type=?> for Instanced Custom ObjectsJavascript /// <field type=?> 用于实例化自定义对象
【发布时间】:2011-07-02 20:59:30
【问题描述】:

尝试习惯 Visual Studio 的 XML javascript 注释语法。我有一个关于类型的问题。假设我有一个自定义类型,例如...

namespace.types.User = function(_id, _name) {
    /// <field name="id" type="Number">ID of the user</field>
    /// <field name="name" type="String">Name of the user</field>
    this.id = _id;
    this.name = _name;
};

如果我想稍后在 &lt;field&gt; 中引用该类型,我会执行类似...

namespace.session = function() {
    /// <field name="CurrentUser" type="namespace.types.User">The current User of the session</field>
    this.CurrentUser = new namespace.types.User('foo', 'bar');
};

但是,当我执行此操作时,Intellisense 将向我显示.CurrentUser 含义的描述它不会显示对.id.name 的任何建议。换句话说,它就像一个没有其他类型数据的普通对象。

如何让 VS 智能来获取自定义对象的更丰富的描述?

【问题讨论】:

    标签: javascript visual-studio comments


    【解决方案1】:

    尝试为函数签名中的参数放入 xml cmets。

    namespace.types.User = function(_id, _name) {
       /// <param name="_id" type="Number" /></param>
       /// <param name="_name" type="String" /></param>
    }
    

    似乎 /// 语法对字段值的智能感知没有帮助,它只从赋值中获取智能感知。因此,由于它不知道传入参数的类型是什么,因此它们不会传递到字段中。

    你会认为 add /// 会覆盖字段的智能感知类型。特别是如果您曾经使用过支持代码 cmets 智能感知的 IDE 或工具。但目前在 VS 2010 中似乎并非如此。

    此外,您可能不希望将命名空间用作变量或标识符,即使它是示例或实际命名空间的替代品。

    命名空间是 javascript 的保留关键字。 (尽管有些人喜欢 Mozilla 已经保留了包)。

    【讨论】:

    • 看来 VS2012 仍然不尊重 注释来覆盖 javascript 的智能感知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多