我有一个可能包含声明的promise属性的对象:
type PromiseAction = {
+type: string,
promise: ?Promise<any>,
};
函数的action
参数声明为PromiseAction类型:
(action: PromiseAction) =>
稍后我会检查收到的action
对象是否包含promise
属性,而action.promise
是否有then
:
if (action.promise && typeof action.promise.then === 'function') {
如果确实如此,那么我会挂钩承诺链:
return promise.then(
此时我收到错误:“调用方法U
的类型参数then
。缺少注释”
我可以在source for flow中看到then
的{{1}}属性有一个Promise
参数,我认为该参数是被要求的参数。
如果我在类型声明中只有一个参数U
,如何提供U
注释?
答案 0 :(得分:6)
您无需定义U
。
您链接到的流源基本上意味着“then
返回的Promise履行的值与处理程序的返回值相同,或者这些处理程序返回的Promise的已实现值“。这听起来很混乱(因为Promises可能会让人很困惑),但最重要的是,这不是你“填写”的东西。它会在then
返回的类型与传递给onFulfill
的{{1}}和onReject
的返回值类型之间创建关系。
您获得的错误意味着Flow无法弄清楚该关系是什么,因为它没有足够的信息。使用类型注释then
回调:
then
这将修复错误,或者至少消除return promise.then((a:string)=>...)
的歧义,以便为您提供更具体的错误。