Javascript 如何将流与async/await、Promissions和thenables一起使用?
Flow可以做一些聪明的事情,比如:Javascript 如何将流与async/await、Promissions和thenables一起使用?,javascript,flowtype,Javascript,Flowtype,Flow可以做一些聪明的事情,比如: 类型MyMap=WeakMap; const obj:MyMap=new WeakMap(); 对象集(123,'条形');//好啊 对象集('not','bar');//流量错误! 但是承诺、表单和异步/等待呢 我希望有可能做到这一点: type AsyncMultiplier = (number) => Thenable<number>; const myTransform: AsyncMultiplier = async inpu
类型MyMap=WeakMap;
const obj:MyMap=new WeakMap();
对象集(123,'条形');//好啊
对象集('not','bar');//流量错误!
但是承诺、表单和异步/等待呢
我希望有可能做到这一点:
type AsyncMultiplier = (number) => Thenable<number>;
const myTransform: AsyncMultiplier = async input => input * 2;
(async () => {
(await myTransform(2)) * 5; // should be ok
// forgetting to await the result:
myTransform(2) * 5; // should give a type error
})();
类型AsyncMultiplier=(数字)=>表格;
常量myTransform:async乘数=异步输入=>input*2;
(异步()=>{
(等待myTransform(2))*5;//应该可以
//忘记等待结果:
myTransform(2)*5;//应给出一个类型错误
})();
有没有办法让Flow理解
await
、表等的语义?Flow理解async
/await
和Promise
s。表格
没有内置类型,尽管您可以定义自己的类型
无论如何,在您的示例中,只需将表格
替换为承诺
,您就会得到预期的错误。请注意,如果尝试键入检查示例,则会出现以下错误:
1: type AsyncMultiplier = (number) => Thenable<number>;
^ identifier `Thenable`. Could not resolve name
1:type async乘数=(number)=>Thenable;
^标识符“Thenable”。无法解析名称
1: type AsyncMultiplier = (number) => Thenable<number>;
^ identifier `Thenable`. Could not resolve name