J'écris un module Node.js avec un typage Flow qui ressemble à ceci.
hole(obj)
.pipe(fn1)
.pipe(fn2)
.pipe(fn3);
Et la définition du type attendu est quelque chose comme ceci.
/* Not working */
hole(T)
.pipe((T) => U)
.pipe((U) => V)
.pipe((V) => W)
Mais je ne suis pas sûr que la dactylographie soit possible.
Actuellement, la fonction est définie comme suit pipe(fn: (any => any)): Hole
. Je pense qu'il faut que je réduise le nombre de any
pour être plus précis que ce que les fonctions renvoient réellement. Voici ce que j'ai essayé de faire pour resserrer la définition du type de la méthode de l'instance, mais j'ai échoué.
/* Not working */
class Hole {
pipe(fn: (T => U)): (Hole & {pipe: (U => V)}))
}
Est-ce possible avec des outils de type JavaScript ? Si Type script peut remplacer Flow, je deviendrai un Type script-er. Je suis également intéressé par la façon dont le Stream de Java résout ce problème.