sequelize.js - Sequelize cu Typescript nu rezolvă corect tipul


Folosind sequelize v5:

class Organization extends Model<Organization> {
  name!: string
}

Organization.init({...}, {sequelize, ...})

Apoi rulând următorul cod:

const organizations = await Organization.findAll()
organizations.forEach(o => console.log(o.name))

Afișează următoarea eroare:

Parameter 'o' implicitly has an 'any' type.

Acest lucru îmi spune că tipul de returnare findAll() nu este dedus ca Promise<Organization[]> așa cum sugerează codul din sequelize:

public static findAll<M extends Model>(this: { new (): M } & typeof Model, options?: FindOptions): Promise<M[]>;

Cum pot face ca apelul findAll() să deducă tipul corect?

Răspuns #1

De fapt, TypeScript deduce tipul corect.

Vezi node_modules/sequelize/types/lib/promise.d.ts

export const Promise: typeof Bluebird;

typeof Bluebird este any, deci Promise este any.

Foarte trist.