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:
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?
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
@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
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