我是 flow.js 的新手,我有一个相当简单的问题: 假设我有一个函数,将类型 A 或类型 B 作为输入,如果输入是 A,则返回类型 AA,或者如果输入是 B,则返回类型 BB:
type A = {|a: string|}
type B = {|b: string|}
type AA = {|aa: string|}
type BB = {|bb: string|}
const f = (x: A | B, type: string): AA | BB => type === "A" ? {aa: "AA"}: {bb: "BB"}
我的问题是我不能这样做:
const x: A = {a: "x"}
const y: AA = f(x, "A")
y 需要为 AA 类型 | BB
我尝试使用参数化泛型,例如
type C<T> = typeof(T) === "A" ? AA : BB;
但是好像没用
有办法做到这一点吗?
最佳答案
这是您希望对函数进行多个声明的地方。
declare function f(x: A, type: string): AA
declare function f(x: B, type: string): BB
现在,如果您要根据 type
参数进行此返回,则可以根据需要将其指定为文字('A'
等)它也会检查这一点。例如:
declare function f(x: A, type: 'A'): AA
关于javascript - 如何根据输入类型定义 flow.js 输出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689103/