我正在尝试创建一个带有两个参数的通用函数,其中第一个是函数数组。第二个参数的类型应该是第一个参数的元素(所有都是函数)的返回类型的并集。
这是我尝试过的:
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");
语言服务在b
调用中为getX
下划线,并显示以下错误:
Type '"somen"' is not assignable to type 'true'.
有人知道解决方案吗?谢谢!