我正在写一个节点。具有流类型的js模块,如下所示。
  
  hole(obj)
    .pipe(fn1)
    .pipe(fn2)
    .pipe(fn3);
  
   预期的类型定义为
   
    类似于
   
   这
  
  /* Not working */
hole(T)
    .pipe((T) => U)
    .pipe((U) => V)
    .pipe((V) => W)
  
   但我真的不确定打字是否可行。
  
  
   目前,该函数定义为
   
    pipe(fn: (any => any)): Hole
   
   . 我想我需要缩小
   
    any
   
   键入函数实际返回的更具体的值。下面是我试图加强实例方法的类型定义的内容,但失败了。
  
  /* Not working */
class Hole {
    pipe(fn: (T => U)): (Hole & {pipe: (U => V)}))
}
  
   在JavaScript类型工具中是否可能?如果类型脚本可以代替Flow,我将成为一个类型脚本er。我还对Java的流如何解决这个问题感兴趣。