Mongoose-hooks fungerer ikke med Typescript


Så vet noen hvorfor jeg kan få en Typescript-feil når jeg bruker en mongoose-hook og refererer til this. Jeg bruker ikke pilfunksjoner, og jeg vet om det leksikalske skopproblemet med det, men selv med anonyme funksjoner som dette:

UserSchema.pre("save", function(next) {
    console.log(this.password);
    next();
});

Den eksakte feilmeldingen er

'this' implicitly has type 'any' because it does not have a type annotation.

Noen som vet hvordan man kommer seg rundt dette?

Forresten, jeg bruker Typescript 2.5.2/NodeJS 8.2.1

Takk!

Svar #1

Prøv dette:

schema.pre("save", function(this: UserModel, next: any) {
  console.log(this.password);
  next();
});

Jeg tror du får feilen fordi du sannsynligvis har en TypeScript-konfigurasjon som sjekker for implicit any. Hvis du skriver 'this' i argumentene til hook-funksjonen, bør feilen bli løst.

Svar #2

prøv dette:

import {HydratedDocument} from 'mongoose'
schema.pre<HydratedDocument<IUser>>('save',function(next){})

i stedet for IUser, bruk grensesnittet ditt.

Relaterte artikler