Typescript类型'undefined'不能分配给类型'T'

问题描述 投票:0回答:1

[enter image description here我在ci管道上编译时,在控制台上出现错误Type 'undefined' is not assignable to type 'T'和'return void 0'错误。谁能告诉我代码中有什么问题以及如何解决这些错误

export function wait(ms: number): Promise<void> {
  return new Promise(resolve => {
    setTimeout(resolve, ms)
  })
}

export async function mapAsync<TIn, TOut>(
  items: TIn[],
  mapper: (item: TIn, index?: number) => Promise<TOut>,
): Promise<TOut[]> {
  const results: TOut[] = []

  for (let i = 0; i < items.length; i++) {
    const item = items[i]
    const result = await mapper(item, i)
    results.push(result)
  }

  return results
}

export async function findAsync<T>(items: T[], predicate: (item: T, index?: number) => Promise<boolean>): Promise<T> {
  for (let i = 0; i < items.length; i++) {
    const item = items[i]
    const matches = await predicate(item, i)

    if (matches) {
      return item
    }
  }

  return void 0
}

谢谢

typescript
1个回答
0
投票

返回语句return void 0应该是与预期返回类型Promise<T>匹配的承诺。即使您没有运行该功能。 TS编译器将生成错误。

export async function findAsync<T>(items: T[], predicate: (item: T, index?: number) => Promise<boolean>): Promise<T> {
  return new Promise<T>(async (resolve) => {
      for (let i = 0; i < items.length; i++) {
        const item = items[i]
        const matches = await predicate(item, i)

        if (matches) {
          resolve(item)
        }
      }

      resolve(0)
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.