Javascript 类型“void”上不存在属性“forEach”

Javascript 类型“void”上不存在属性“forEach”,javascript,node.js,typescript,types,Javascript,Node.js,Typescript,Types,以下代码是:1。正在读取文件夹。2.合并和自动裁剪图像。3.将最终图像保存到png文件中 const filenames = fs.readdirSync('./in').map(filename => { return path.parse(filename).name }) const finalImages = filenames.forEach(async filename => { const bottomImage = await jimp.read(`./in

以下代码是:1。正在读取文件夹。2.合并和自动裁剪图像。3.将最终图像保存到png文件中

const filenames = fs.readdirSync('./in').map(filename => {
  return path.parse(filename).name
})

const finalImages = filenames.forEach(async filename => {
  const bottomImage = await jimp.read(`./in/${filename}.png`)
  const topImage = await jimp.read('./dots.png')
  const file = bottomImage
    .composite(topImage, 0, 0)
    .autocrop(false)
  return {
    filename,
    file
  }
})

finalImages.forEach((finalImage: any) => {
  finalImage.file.write(`./out/${finalImage.filename}.png`)
})
我收到以下类型脚本错误:

类型“void”上不存在属性“forEach”


原因可能是什么,以及如何修复它?

我怀疑您想要使用的是地图而不是forEach。 map迭代一个数组并返回一个新数组,而forEach只进行迭代而不返回任何内容

这就是TS编译器推断finalImages类型为void的原因。

forEach不返回任何内容,您需要使用map代替wait Promise.all