javascript - 在 ts 中映射元组?

标签 javascript typescript flowtype

我正在将一些流代码转换为 ts,但不确定如何在 TS 中执行与此流代码等效的操作:

declare function $nullableAwait<T>(p: Promise<T> | T): T | null;
export function genAllNull<T: Iterable<mixed>>(...promises: T): Promise<$TupleMap<T, typeof $nullableAwait>> {
  return Promise.all([].map.call(promises, genNull));
}

具体来说,我在 TS 中找不到任何与流中的 $TupleMap 等效的东西,它允许我将类型数组从一种类型映射到另一种类型

最佳答案

自 typescript 3.1 以来,您可以像映射任何其他类型一样映射元组(参见 PR)

如果我对您的代码的理解是正确的(而且我并不声称知道流程)。这就是您正在寻找的内容:

type Unpack<T> = T extends Promise<infer U> ? U : T; 
type UnpackAllOrNull<T> = {
  [P in keyof T]:  Unpack<T[P]> |null
}
export function genAllNull<T extends Promise<any>[]>(...promises: T): Promise<UnpackAllOrNull<T>> {
  return null!;
}

let a = genAllNull(Promise.resolve(1),Promise.resolve("")) //Promise<[number | null, string | null]>

关于javascript - 在 ts 中映射元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155246/

相关文章:

javascript - 使用 Javascript 上传多个文件

javascript - 在节点模块中导入 Typescript 和 Js 文件时出现问题

javascript - 有没有办法去获取 typescript 来检测我何时从函数返回未定义?

javascript - 将带有枚举的属性传递给需要带有字符串的属性的函数

javascript - 加载页面后菜单项消失

javascript - 为什么计数正确递增

html - 使用 *ngFor [ngStyle] 更改所有背景颜色

reactjs - 如何使用 eslint-plugin-react 修复由流函数类型引起的警告?

javascript - 使用 Flow 定义对象字面量

javascript - MS Word Web 插件 javascript 同时搜索多个字符串