作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个与 Promise.all
非常相似的函数,除了它捕获错误并为任何抛出的 promise 返回 null
:
export async function genNull<T>(promise: Promise<T>): Promise<?T> {
try {
return await promise;
} catch (err) {
return null;
}
}
export function genAllNull<T: Array<Promise<mixed>>>(...promises: T): Promise<$TupleMap<T, typeof $await>> {
return Promise.all(promises.map(genNull));
}
我现在要解决的问题是我不知道如何正确地注释 genAllNull
函数,以便结果都可以为空。例如如果我写:
const [foo, bar] = await genAllNull(Promise.resolve(42), Promise.resolve(43));
我希望 foo
和 bar
都有 ?Number
的流类型,但它们有 Number
相反,即流不认为它们可以为空。我不知道如何注释函数签名以便返回类型可为空。
最佳答案
以下错误与null not compatible with number
正确正确地:
export async function genNull<T>(promise: Promise<T>): Promise<T | null> {
try {
return await promise;
} catch (err) {
return null;
}
}
export function genAllNull<Item, T: Array<Promise<Item>>>(
...promises: T
): Promise<$TupleMap<T, <V>(i: Promise<V>) => V | null>> {
return Promise.all(promises.map(genNull));
}
async function fn(){
const [foo, bar] = await genAllNull(Promise.resolve(43), Promise.resolve(43));
var val1: number = foo;
var val2: number = bar;
}
( On Flow Try )
首先,我放弃了使用 ?T
赞成T | null
自 ?T
实际上是T | null | undefined
你说你只想要null
待补充。
二、改mixed
成为一个实际的参数化类型,第三个改变了typeof $await
成为<V>(i: Promise<V>) => V | null
因为这反射(reflect)了您正在进行的转化。
关于javascript - 允许类似 promise.all 的函数返回可选的 null 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194459/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!