Venant d'un milieu Python, j'ai rencontré quelques problèmes en essayant de rendre Typescript heureux avec le modèle d'héritage suivant.
Étant donné la classe de base suivante :
// model.ts
export class Model {
serialize() {}
static deserialize(dbRow) {}
static async filter(options) {
const dbRows = await getData(options);
return dbRows.map(row => this.deserialize(row));
}
}
et la classe suivante qui l'étend :
// user.ts
export class User extends Model {
serialize() {......}
static deserialize(dbRow) {......return new User(......)}
someOtherMethod() {.....}
}
Comment pourrais-je définir Model.filter de sorte que const users = await User.filter({.....})
déduira automatiquement le type d'utilisateurs comme User[] ? Actuellement, le type déduit est Model[].
Je sais que je peux faire const users = <User[]> await User.filter({....})
mais je me demande s'il y a un moyen de suggérer le type de retour de Model.filter comme constructeur de classe afin que les instances des classes enfants soient déduites correctement.