J'ai une fonction (comparaison) avec un type de retour union. Il peut renvoyer -1
, 1
ou 0
. Cependant, j'ai besoin d'un cas spécial ("résultat") pour quand au moins un des éléments comparés n'est pas défini. Le compilateur me permet d'ajouter null
comme valeur de retour potentielle, mais pas NaN
(ce qui, dans certains scénarios, aurait du sens, par exemple en comparant des nombres ou des dates).Type d'union entier (littéral), avec NaN comme valeur de retour valide
Cette compile
function myFunc(item1: MyType, item2: MyType): -1 | 0 | 1 | null {
...
}
mais pour celui-ci, le compilateur dit qu'il "ne peut pas trouver le nom NaN":
function myFunc(item1: MyType, item2: MyType): -1 | 0 | 1 | NaN {
...
}
Pourquoi NaN
pas autorisé? Est-il possible d'utiliser NaN
?
NaN n'est pas un float int, c'est probablement pourquoi TS ne l'aime pas. – mfeineis
@mfeine est sûr, mais cette 'fonction bla(): 1 | "3" | null {...} 'compile également. –
JavaScript ne diffère pas entre int et float. Les deux sont du même type 'Number'. Je pense que NaN est aussi 'Number'. – Misaz