Je construis une application en utilisant mongoose et tapuscrit. Voici un modèle simple que j'ai fait:Problème de typage de mangouste avec tapuscrit
import * as callbackMongoose from 'mongoose';
var mongoose = callbackMongoose;
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;
var userSchema = new Schema({
username: String,
email: String,
hash: String
});
export default mongoose.model('User', userSchema);
Cela fonctionne bien mais j'ai besoin de lancer chaque document à tout avant d'accéder aux propriétés. Je lis un guide qui dit que je pouvais le faire:
interface IUser extends mongoose.Document {
username: String;
email: String;
hash: String;
}
export default mongoose.model<IUser>('User', userSchema);
Mon problème est que ne semble pas la mangouste type d'avoir la propriété Document
. Il n'a pas non plus la propriété ObjectId
. Quand je jette de la mangouste à n'importe qui et que j'utilise ces membres, ça marche très bien. Cela semble être un problème de frappe.
J'ai installé le typage mangouste comme ceci:
npm install @types/mongoose --save
Les typages ne fonctionnent pour le schéma et ils sont bons pour toutes les autres bibliothèques que j'utilise. Quelque chose ne va pas avec ces définitions de type? Est-ce que je fais quelque chose de mal?
Il s'est avéré que le problème était lié au fait que j'avais affecté l'importation à une variable. Je l'ai corrigé en utilisant une approche similaire à celle que vous avez décrite dans 'Database.ts', donc votre réponse est correcte. Merci! – user5505266