【发布时间】:2019-11-04 16:39:23
【问题描述】:
我正在尝试创建一个接受两个参数的通用函数,其中第一个是函数数组。第二个参数的类型应该是第一个参数的元素(都是函数)的返回类型的并集。
这是我尝试过的:
type Fn<R> = () => R;
const a: Fn<true> = () => true;
const b: Fn<"somen"> = () => "somen";
interface C<ABUnion, ABReturnUnion> {
fns: ABUnion[];
returns: ABReturnUnion;
}
function getX<R>(fns: Array<Fn<R>>, returns: R) {
type FnsUnion = typeof fns[number];
const c: C<FnsUnion, R> = {
fns,
returns,
};
return c;
}
getX([b, a], "true");
语言服务在getX调用中加下划线b,并显示如下错误:
Type '"somen"' is not assignable to type 'true'.
有人知道解决方案吗?谢谢!
【问题讨论】:
标签: typescript generics return union inference