2

メソッド呼び出しで使用するオプション オブジェクトについて、Visual Studio で Intellisense サポートを取得したいと考えています。

キャッチオール オプション オブジェクトを使用して Javascript の関数呼び出しを構成するのが一般的です。たとえば、jquery の Ajax 呼び出しでは次を使用します。

$.ajax(settings);

settings は次のような単なるオブジェクトです。

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

これは暗黙的なオブジェクトですが、プロパティは特定のクラスに従います。通常、Intellisense/記述コードにとっては重要であるが、コードが機能するためには重要ではないこのようなものがある場合、これを -vsdoc.js ファイルに入れます。しかし、どうすれば Intellisense をこのオブジェクトに対応させることができるでしょうか?

Microsoftが提供しているので、例としてjquery-vsdoc.jsを見ましたが、役に立ちませんでした。ある場合は「オブジェクト」と入力するだけで、別の場合はまったく文書化しません。

たとえば、これを試してみました-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 サポートを取得するにはどうすればよいでしょうか?

4

1 に答える 1

2

TypeScript 以外のオブジェクト パラメーターで真のIntellisense サポートを取得する方法はわかりませんが、パラメーター ドキュメント ノードをある程度フォーマットすることはできます。

たとえば、連続したテキスト ブロック (スペースや改行文字を含まない) である限り、'type' 属性に好きなテキストを入力できます。

元。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: 複数行のパラメーター ドキュメント (&#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 のようにオブジェクト パラメーターに真の Intellisense が提供されるわけではありませんが、コメントのスタイル設定をより詳細に制御できるようになり、あいまいさを軽減するのに役立つはずです。

于 2013-03-13T00:37:11.853 に答える