通过这个例子:
const myObj = {
test: true,
};
type MyType = typeof myObj;
const getValue = (): MyType => {
return myObj;
};
// how to do this??
type TheReturnType = getValue;
const nextObj: TheReturnType = {
test: false,
};
我想提取函数将返回的type
,因此我可以重用该类型。我认为没办法得到它。以上不起作用。 typeof getValue
将返回该函数。
答案 0 :(得分:3)
这是一个ExtractReturn
助手,它可以获取函数的返回类型:
type ExtractReturn<F> =
$PropertyType<$ObjMap<{ x: F }, <R>(f: () => R) => R>, 'x'>
让我们用这个:
type TheReturnType = ExtractReturn<typeof getValue>
现在TheReturnType
将具有getValue
函数的返回类型。另请注意,在函数名称之前调用ExtractReturn
帮助程序需要typeof
运算符。
这是实现ExtractReturn
帮助程序的完全不同的方法:
type _ExtractReturn<B, F: (...args: any[]) => B> = B;
type ExtractReturn<F> = _ExtractReturn<*, F>;
这个助手与上面的助手完全相同;重点是,实现这一目标的方法不止一种。