gpt4 book ai didi

typescript - Flow Type可以在方法链中收紧实例的方法定义吗

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:29 25 4
gpt4 key购买 nike

我正在编写一个 Node.js 模块,它是 Flow 类型的,看起来像这样。

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 类型工具中是否可行?如果 Type Script 可以代替 Flow,我将成为 Type Script-er。我也对 Java 的 Stream 如何解决这个问题很感兴趣。

最佳答案

在 Typescript 和 Flow 中都可能。这是一个 TypeScript 版本:

declare class Hole<T> {
constructor(p: T);
pipe<R>(fn: (p: T) => R): Hole<R>;
}

new Hole(42)
.pipe(p => p.toString())
.pipe(p => parseInt(p))
.pipe(p => [p])
.pipe(p => p.length)

Typescript Demo

Flow demo

关于typescript - Flow Type可以在方法链中收紧实例的方法定义吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48852611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com