首先,我不是Javascript程序员,但我确实有JS程序员向我汇报。
我正在尝试通过添加到VS2008的Javascript Intellisense功能来改进我们的工作方式。
具体来说,现在我正试图弄清楚如何在复杂的数据结构中添加强类型的外观。
到目前为止,我想出了这个:
GetDateTimeResponse = function GetDateTimeResponse() {
/// <summary>The return value from GetDateTime</summary>
/// <field name="CurrentDateTime" type="String" mayBeNull="false">The current date time, ISO8601 format UTC</field>
/// <field name="ListOfStrings" type="Array" arrayType="String" mayBeNull="true">An array of strings</field>
/// <field name="SubTypeList" type="Array">An array of complex types</field>
/// <field name="AnInteger" type="Number" integer="true">An integer</field>
/// <field name="AFloat" type="Number">A float</field>
};
GetDateTimeResponse.prototype = {
CurrentDateTime: "",
ListOfStrings: new Array(),
SubTypeList: new Array(),
AnInteger: 0,
AFloat: 0.0
};
这是一个实验性的“类”来处理来自测试SOAP / JSON服务的响应。
WSDL引用一个包含(应该是)匹配类型的模式:
<xs:element name="GetDateTimeResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="CurrentDateTime" type="xs:dateTime"/>
<xs:element name="ListOfStrings" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="SubTypeList" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="IDFIeld" type="xs:int"/>
<xs:element name="DisplayName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AnInteger" type="xs:int"/>
<xs:element name="AFloat" type="xs:float"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我们使用jQuery与服务进行通信,我想编写辅助方法来获取和返回该类型的对象。
它有点工作。如果我创建js文件,/// <reference/>
包含该定义的文件,那么此代码在一定程度上起作用:
var bob = new GetDateTimeResponse();
bob.CurrentDateTime = "";
现在,我得到了类名称(GetDateTimeResponse
),字段名称(CurrentDateTime
等)的智能,我得到了评论中字段的说明。
但我没有获得类型,mayBeNull,arrayType和整数属性的任何内容。如果我向构造函数添加一个参数,并使用<param>
注释,名称,类型和描述工作。
但整数,mayBeNull等仍然没有做任何事情。
有什么想法吗?
这甚至可以在VS2008中使用吗?
无论如何命名一个“类型”,其他的是对象,数字或字符串(我想让intellisense做类型的数组)
毫无疑问,这就是我们可以为具有工作智能感知的Web服务生成javascript客户端。
我对此的参考是:
http://weblogs.asp.net/bleroy/archive/2007/04/23/the-format-for-javascript-doc-comments.aspx