Flow可以做一些聪明的事情,比如this:
type MyMap = WeakMap<number, string>;
const obj: MyMap = new WeakMap();
obj.set(123, 'bar'); // ok
obj.set('not', 'bar'); // flow error!
但是promises,thenables和async / await呢?
我希望有可能做到这一点:
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
})();
有没有办法让Flow了解await
,thenables等的语义?
答案 0 :(得分:3)
Flow了解async
/ await
和Promise
。 Thenable
没有内置类型,但您可以定义自己的类型。
无论如何,在您的示例中,只需将Thenable
替换为Promise
即可获得预期的错误。请注意,如果您尝试对示例进行类型检查,则会出现以下错误:
1: type AsyncMultiplier = (number) => Thenable<number>;
^ identifier `Thenable`. Could not resolve name