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