2016-04-20 11 views
0

私が作成したいくつかのカスタムオブジェクト用のIntellisenseファイルを作成しましたが、メソッドが1つの型しか返すことができない場合は、すべて正常に動作しています。インテリセンスファイルが含まれている場合は、私の質問を説明するための例としてVisual StudioでJavascript Intellisenseに複数の戻り値の型を指定することはできますか?

var Bob = function() { 
    /// <signature> 
    /// <returns type="Bob"/> 
    /// </signature> 
} 

var Fred = function() { 
    /// <signature> 
    /// <returns type="Fred"/> 
    /// </signature> 
} 

Bob.prototype.DoWhatBobDoes = function() { 
    /// <signature> 
    /// <returns type="Bob"/> 
    /// </signature> 
} 

Fred.prototype.DoWhatFredDoes = function() { 
    /// <signature> 
    /// <returns type="Fred"/> 
    /// </signature> 
} 

し、Visual Studioで、私はこれを行うことができ、それはDoWhatFredDoes()メソッドは、フレッド・オブジェクトを返すことを知っている。すなわち:

intellisense

しかし私の方法のいくつかは、例えばDoWhatFredDoes()メソッドは、ボブやフレッドオブジェクトを返すことができ、複数の戻り値の型を持つことができます。これを指定するintellisenseファイルにはとにかくありますか?

私はこれにそれを修正しようとしているが、それは動作しません

var Bob = function() { 
    /// <signature> 
    /// <returns type="Bob"/> 
    /// </signature> 
} 

var Fred = function() { 
    /// <signature> 
    /// <returns type="Fred"/> 
    /// </signature> 
} 

Bob.prototype.DoWhatBobDoes = function() { 
    /// <signature> 
    /// <returns type="Bob"/> 
    /// </signature> 
} 

Fred.prototype.DoWhatFredDoes = function() { 
    /// <signature> 
    /// <returns type="Fred|Bob"/> 
    /// </signature> 
} 

私はhttps://msdn.microsoft.com/en-us/library/hh542719.aspxのドキュメントを見て持っていたので、多分それだけだ複数の戻りタイプの言及がありませんありえない?

+0

関数のシグネチャは、戻り値の型だけで決して異なることはありません。あなたの関数がどのように複数の型を返すことができるかわかりません。最も近いのは、 'Fred'と' Bob 'が関数が返すように定義されている共通の祖先型を共有している場合です。しかし、その場合でも、祖先型の1つの型しか返していません。 – gmiley

+0

@gmileyたとえば、メソッドが1に設定されているとFredオブジェクトを返し、それ以外の場合はBobオブジェクトを返すパラメータがあれば、関数は別の型を返すことができます。 – ChrisA

+0

はい、それはプライマリシグネチャの変更で、パラメータです。 'SomeFunction()'が 'string'を返す場合、' SomeFunction() 'に' int'を返すことはできませんが、 'SomeFunction(int) ) ''を返します。 'SomeFunction(int)'は 'int'を返すようにすでに定義されているので、' string'を返すことはできません。 – gmiley

答えて

1

関数のシグネチャは、戻り値の型だけでは異なることはできません。たとえば、タイプintを返すSomeFunction()として定義された関数がある場合は、タイプstringを返すSomeFunction()を持つことはできません。ただし、関数がパラメータの数または型によって異なる場合、それらの関数定義のそれぞれは異なる戻り型を持つことができます。たとえば、SomeFunction(int)intを返す場合、stringを返すことができるSomeFunction(string)を定義することもできますが、stringを返すようにSomeFunction(string)を定義すると、intも返すように定義することはできません。

関連する問題