Javascript 如何在流中用承诺类型包装该类型?

Javascript 如何在流中用承诺类型包装该类型?,javascript,types,flowtype,Javascript,Types,Flowtype,这是我要找的东西的骨架 /@flow-strict constmyfn=()=>Promise.resolve(5); 常数其他编号:??=6. 我希望得到承诺所包装的东西的类型,并将其作为一种类型——在本例中是,number 我无法想出任何流实用程序方法来实现这一点:(您可以使用流从函数中提取Promise值 // You can also use `typeof myFn` in place of `MyFn`, // but I prefer to be explicit with fu

这是我要找的东西的骨架

/@flow-strict
constmyfn=()=>Promise.resolve(5);
常数其他编号:??=6.
我希望得到承诺所包装的东西的类型,并将其作为一种类型——在本例中是,
number

我无法想出任何流实用程序方法来实现这一点:(

您可以使用流从函数中提取
Promise

// You can also use `typeof myFn` in place of `MyFn`,
// but I prefer to be explicit with function types
type MyFn = void => Promise<number>;
const myFn: MyFn = () => Promise.resolve(5);

// Given a function that returns a Promise<R>, return R
// Example: given a function that returns `Promise<number>`, this returns `number`
type ExtractReturnPromiseValue = <R>(() => Promise<R>) => R;
const anotherNumber: $Call<ExtractReturnPromiseValue, MyFn> = 6;
const notAnotherNumber: $Call<ExtractReturnPromiseValue, MyFn> = false; // Error!
//您也可以使用'typeof myFn'代替'myFn',
//但我更喜欢用函数类型显式表示
类型MyFn=void=>Promise;
常量myFn:myFn=()=>Promise.resolve(5);
//给定一个返回承诺的函数,返回R
//示例:给定一个返回'Promise'的函数,该函数返回'number'`
输入ExtractReturnPromiseValue=(()=>PromiseValue)=>R;
const另一个号码:$Call=6;
const notAnotherNumber:$Call=false;//错误!

要“获取”承诺的解析值,您需要在
中。然后
-或者使用
异步/await
-我无法帮助您将其转换为您想要的,但现在您知道如何“获取”这个值,我相信你可以给你的骨架添加一些肉这是一个运行时的要求-也许它也是一个流的要求,但由于它是一个静态类型检查器,我想它可能会得到这个信息anyway@Mark我已经修改了你的问题标题,以明确你想要提取一个类型,而不是访问pr的实现值omise.我把这一切都组合成一行,也许这很有用:
键入$UnwrapPromise=$Call Promise=>U,()=>V>
对不起,让那
键入$UnwrapPromise=$Call U,V>。