我是flow.js的新手,我有一个相当简单的问题: 假设我有一个函数将A型或B型作为输入,如果输入为A,则返回AA型,或者输入BB为B:
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;
但它似乎无法正常工作
有办法吗?
答案 0 :(得分:1)
这是您希望对函数进行多次声明的地方。
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