Je ne suis pas sûr de ce que vous essayez de faire, mais il semble comme vous essayez de définir une fonction qui renvoie un de plusieurs types. Ainsi, par exemple, la fonction retournera Type1 ou Type2. À moins que les deux types partagent un ensemble commun de fonctionnalités, vous devrez alors vérifier le type avant d'appeler une méthode potentiellement différente sur l'objet retourné.
En supposant que les objets que vous retournez faire partagent un ensemble de fonctionnalités, il serait préférable de définir que dans une interface, puis déclarer que chaque type d'objet que vous souhaitez revenir implémente cette interface.
Donc, à titre d'exemple.
interface CommonStuff {
someFunction();
someOtherFunction();
}
class Type1 implements CommonStuff {
someFunction() {}
someOtherFunction() {}
}
class Type2 implements CommonStuff {
someFunction() {}
someOtherFunction() {}
}
Puis ont simplement votre fonction retourne un type de CommonStuff
returnTypes(str:String) : CommonStuff {
let x : Type1;
let y : Type2;
...
const z = someCondition ? x : y ;
return z;
}
Cela évite besoin de vérifier le type plus tard
const something = returnTypes("blah);
something.someFunction(); // you know something has a someFunction() method.
Cette solution ne résoudra pas le problème, à la fin Une fois que la fonction retourne le résultat, elle retourne quel est le 'Type1' ou' Type2'? – PRAISER