gpt4 book ai didi

javascript - FlowJS 内联柯里化(Currying)函数类型与 Union

转载 作者:行者123 更新时间:2023-12-01 01:01:36 25 4
gpt4 key购买 nike

如何在 Flow 中使用 Union 编写内联柯里化(Currying)函数类型?

以下示例可以正常工作:

type Foo = () => () => string;

function func(foo: Foo): string {
return foo()();
}

这是 Union 的问题:

type Foo = () => string | () => () => string;

function func(foo: Foo): string {
const f = foo();
if (typeof f === 'function') {
return f(); // Cannot return `f()` because function type [1] is incompatible with string [2].
}
return f;
}

但是,它可以通过以下方式修复:

type TF = () => string;
type Foo = TF | () => TF;

function func(foo: Foo): string {
const f = foo();
if (typeof f === 'function') {
return f();
}
return f;
}

那么如何使用 Union 编写内联柯里化(Currying)函数类型呢?

Try Flow

最佳答案

问题出在这里:

type Foo = () => string | () => () => string;

目前,这表示 Foo 是一个函数类型,其返回类型为:

string | () => () => string

这不是你想要的。如果添加一些括号,Flow 将正确理解这一点:

type Foo = (() => string) | () => () => string;

(Try Flow)

关于javascript - FlowJS 内联柯里化(Currying)函数类型与 Union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56017655/

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