【问题标题】:What should be the type of function which returns array of Promises返回 Promises 数组的函数应该是什么类型
【发布时间】:2019-12-30 14:10:16
【问题描述】:

我有一个函数,它基本上返回 Promise 数组。函数的返回类型应该是什么?下面是代码

const makeLabelNodesRequest: Promise<K8sResourceKind> = (selectedNode: NodeKind[]) => {
const labelPath = '/metadata/labels';
const labelData = selectedNode.map((node: NodeKind) => {
  const labels = SelectorInput.arrayify(_.get(node, labelPath.split('/').slice(1)));
  const lblVal = { ...SelectorInput.objectify(labels), ...labelObj };
  const patch = [
    {
      op: labels.length ? 'replace' : 'add',
      value: lblVal,
      path: labelPath,
    },
  ];
  return k8sPatch(NodeModel, node, patch); // returns a promise
});
return labelData; //array of Promise

};

它给出了这个错误 - [ts] 类型 '(selectedNode: NodeKind[]) => Promise[]' 缺少来自类型 'Promise' 的以下属性:然后,catch,[Symbol.toStringTag]。 请注意 NodeKind 和 K8sResourceKind 是自定义类型。

【问题讨论】:

  • Array&lt;Promise&lt;K8sResourceKind&gt;&gt;?
  • 看起来 k8sPatch 函数的返回类型不是 Promise

标签: javascript reactjs typescript types


【解决方案1】:

你有两个选择:

const makeLabelNodesRequest: Array<Promise<K8sResourceKind>>

或者

const makeLabelNodesRequest: Promise<K8sResourceKind>[]

第一个解决方案只是第二个解决方案的别名,应该由您的 IDE 自动完成指示。

这些解决方案都没有其他优势,只要保持一致并在您的代码库中使用单一语法即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2013-06-08
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    相关资源
    最近更新 更多