2016-04-20 5 views
0

Ich habe eine Intellisense-Datei für einige benutzerdefinierte Objekte erstellt, die ich erstellt habe, und es funktioniert alles gut, wenn die Methoden immer nur einen einzigen Typ zurückgeben können.Ist es möglich, mehrere Rückgabetypen für Javascript intellisense in Visual Studio anzugeben?

Als Beispiel meine Frage zu veranschaulichen, wenn die IntelliSense-Datei enthält:

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> 
} 

dann in Visual Studio ich das tun kann, das heißt, dass die DoWhatFredDoes weiß() -Methode ein Fred-Objekt zurückgibt:

intellisense

können jedoch zum Beispiel haben einige meine Methoden mehrere Rückgabetypen, die DoWhatFredDoes() -Methode einen Bob oder ein Fred-Objekt zurückgeben kann. Gibt es in der IntelliSense-Datei trotzdem eine Angabe?

Ich habe versucht, es so zu modifizieren, aber es funktioniert nicht:

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> 
} 

Ich habe auf https://msdn.microsoft.com/en-us/library/hh542719.aspx in der Dokumentation einen Blick hatte, und es gibt keinen Hinweis auf mehrere Rückgabetypen so vielleicht ist es nur nicht möglich?

+0

Eine Funktionssignatur kann sich niemals allein durch den Rückgabetyp unterscheiden. Ich sehe nicht, wie deine Funktion jemals mehrere Typen zurückgeben könnte. Am nächsten kommt man, wenn 'Fred' und' Bob' einen gemeinsamen Vorfahrentyp teilen, für den die Funktion definiert ist. Aber in diesem Fall gibt es nur einen einzigen Typ zurück, den Ahnentyp. – gmiley

+0

@gmiley Die Funktion könnte einen anderen Typ zurückgeben, wenn zum Beispiel die Methode einen Parameter hätte, der, wenn er auf 1 gesetzt ist, ein Fred-Objekt zurückgibt, andernfalls ein Bob-Objekt zurückgibt. – ChrisA

+0

Ja, aber das ist die primäre Signaturänderung, die Parameter. Sie können keine Funktion haben, die sich nur durch return type unterscheidet: Wenn Sie 'SomeFunction()' haben, das eine 'string' zurückgibt, dann können Sie' SomeFunction() 'nicht haben, das ein' int' zurückgibt, aber Sie können 'SomeFunction (int) 'das gibt ein' int' zurück. 'SomeFunction (int)' könnte dann niemals eine 'string' zurückgeben, da sie bereits definiert ist, um ein' int' zurückzugeben. – gmiley

Antwort

1

Eine Funktionssignatur kann nicht nur vom Rückgabetyp abweichen. Wenn Sie beispielsweise eine Funktion definiert haben, die als SomeFunction() definiert ist und den Typ int zurückgibt, können Sie nicht auch SomeFunction() verwenden, das den Typ string zurückgibt. Wenn sich die Funktion jedoch nach Anzahl oder Typ der Parameter unterscheidet, kann jede dieser Funktionsdefinitionen einen anderen Rückgabetyp haben. Zum Beispiel: Wenn SomeFunction(int) eine int zurückgibt, können Sie auch SomeFunction(string) definieren, welche eine string zurückkehren können, aber sobald Sie SomeFunction(string) definieren eine string zurückzukehren, können Sie nicht auch definieren sie eine int auch zurückzukehren.

Verwandte Themen