gpt4 book ai didi

typescript - 如何使用 "p-waterfall"TypeScript 类型

转载 作者:行者123 更新时间:2023-12-03 17:10:17 25 4
gpt4 key购买 nike

我正在使用 p-waterfall我想知道如何使用提供的 TypeScript 类型。这是types .

declare namespace pWaterfall {
type Task<ValueType, ReturnType> = (
previousValue: ValueType
) => ReturnType | PromiseLike<ReturnType>;

type InitialTask<ReturnType> = () => ReturnType | PromiseLike<ReturnType>;
}

declare const pWaterfall: {
<ReturnType>(tasks: [pWaterfall.InitialTask<ReturnType>]): Promise<ReturnType>;
<ValueType1, ReturnType>(
tasks: [
pWaterfall.InitialTask<ValueType1>,
pWaterfall.Task<ValueType1, ReturnType>
]
): Promise<ReturnType>;
<ValueType1, ValueType2, ReturnType>(
tasks: [
pWaterfall.InitialTask<ValueType1>,
pWaterfall.Task<ValueType1, ValueType2>,
pWaterfall.Task<ValueType2, ReturnType>
]
): Promise<ReturnType>;
...
我放了一个 example (下面的代码)在一起,如果输入真的会帮助我理解如何让类型与 p-waterfall 一起使用.
import pWaterfall from "p-waterfall";

interface User {
name: string;
}

const getItemsRequest = async (sliceCount: number): Promise<User[]> => {
return [{ name: "a" }, { name: "b" }, { name: "c" }].slice(0, sliceCount);
};

const getNames = (results: User[]): string[] => {
return results.map(item => item.name);
};

const countArrayLength = <T extends unknown[]>(results: T): number => {
return results.length;
};

(async () => {
const transformers = [getItemsRequest, getNames, countArrayLength];

const shouldBeTypeNumberButIsUnknown = await pWaterfall(transformers, 2);

console.log(`results`, shouldBeTypeNumberButIsUnknown); // 2
})();

shouldBeTypeNumberButIsUnknown未知,但应该是 number因为最后一个函数传入 pWaterfall返回一个数字。

最佳答案

我已经为 p-waterfall 打开了一个 PR,它可以让你轻松地做你想做的事。 See here .
同时,您可以使用两种解决方法:

  • 你可以直接使用我的 fork :
  • npm uninstall p-waterfall
  • npm install https://github.com/sindresorhus/p-waterfall/tarball/c6802cc6c55f00803a3262db2f119c69d07241ec
  • 此命令直接从 my commit c6802cc6c55f00803a3262db2f119c69d07241ec 安装

  • 然后使用我在 GitHub 问题
  • 中解释的 const 断言

  • 您可以通过 transformers直接数组,无需创建中间变量。这样 p-waterfall 就会正确。 See on StackBlitz
  • 关于typescript - 如何使用 "p-waterfall"TypeScript 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64734481/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com