2016-04-20 1 views
0

J'ai créé un fichier intellisense pour certains objets personnalisés que j'ai créés et tout fonctionne bien si les méthodes ne peuvent jamais retourner qu'un seul type.Est-il possible de spécifier plusieurs types de retour pour Javascript IntelliSense dans Visual Studio?

À titre d'exemple pour illustrer ma question, si le fichier IntelliSense contient:

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

Ensuite, dans Visual Studio, je peux le faire, par exemple, il sait que la méthode DoWhatFredDoes() retourne un objet Fred:

intellisense

Cependant certaines de mes méthodes peuvent avoir plusieurs types de retour, par exemple la méthode DoWhatFredDoes() pourrait renvoyer un Bob ou un objet Fred. Y at-il de toute façon dans le fichier intellisense de spécifier cela?

J'ai essayé de le modifier à cela, mais il ne fonctionne pas:

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

J'ai regardé la documentation sur https://msdn.microsoft.com/en-us/library/hh542719.aspx et il n'y a aucune mention de plusieurs types de retour alors peut-être qu'il est juste pas possible?

+0

Une signature de fonction ne peut jamais différer selon le type de retour uniquement. Je ne vois pas comment votre fonction pourrait renvoyer plusieurs types. Le plus proche que vous pouvez en venir est si Fred et Bob partagent un type d'ancêtre commun que la fonction est définie pour retourner. Mais dans ce cas, il ne renvoie encore qu'un seul type, le type ancêtre. – gmiley

+0

@gmiley La fonction pourrait retourner un type différent si, par exemple, la méthode avait un paramètre qui, s'il était mis à 1, retournerait un objet Fred, sinon retournerait un objet Bob. – ChrisA

+0

Oui, mais c'est le changement de signature primaire, les paramètres. Vous ne pouvez pas avoir une fonction qui ne diffère que par le type de retour: si vous avez 'SomeFunction()' qui retourne un 'string' alors vous ne pouvez pas avoir' SomeFunction() 'qui retourne un int, mais vous pouvez avoir' SomeFunction (int) 'qui renvoie un' int'. 'SomeFunction (int)' ne pourrait alors jamais retourner une 'chaîne' car il est déjà défini pour renvoyer un' int'. – gmiley

Répondre

1

Une signature de fonction ne peut pas différer selon le type de retour uniquement. Par exemple, si vous avez une fonction définie comme SomeFunction() qui renvoie le type int, vous ne pouvez pas également avoir SomeFunction() qui renvoie le type string. Toutefois, si la fonction diffère par le nombre ou le type de paramètres, chacune de ces définitions de fonction peut avoir un type de retour différent. Par exemple: si SomeFunction(int) renvoie un int, vous pouvez également définir SomeFunction(string) qui peut renvoyer un string, mais une fois que vous avez défini SomeFunction(string) pour renvoyer un string, vous ne pouvez pas également le définir pour renvoyer un int.