typescript - Hur man typar aggregeringsfunktioner med Sequelize


Jag arbetar med att köra en enkel fråga för att summera ett kolumnvärde, det fungerar ganska bra men jag ville veta om det finns ett sätt att skriva typen på resultatet på något sätt, jag använder TypeScript och jag skulle verkligen vilja undvika //@ts-ignore-delen. Så här ser min kod ut:

const result: number = parseInt(
        (
          await Model.findAll({
            attributes: [
              [Sequelize.fn('sum', Sequelize.col('amount')), 'total']
            ],
            where: {
              any-criteria
            }
          })
        )[0]['dataValues']['total'] ?? 0,
        10
      )

Jag undrade om det finns ett sätt att göra något liknande:

const result: number = 
          await Model.findAll({
            attributes: [
              [Sequelize.fn('sum', Sequelize.col('amount')), 'total']
            ],
            where: {
              any-criteria
            }
          })
        )

Svar #1

Du måste först tvinga omvandla typeof Model till unknown-typ, efter det kan du konvertera den till vilken typ som helst på detta sätt.

 const result = ((
    await Model.findAll({
      attributes: [
        [Sequelize.fn('sum', Sequelize.col('amount')), 'total']
      ],
      where: {
        any-criteria
      }
    })
  )[0]['dataValues']['total'] ?? 0) as unknown as number