javascript - Next auth getSession med typescript
Jeg bruker next-auth getSession i API-ruter slik
const mySession = await getSession({ req });
Jeg er sikker på at typen til mySession er denne
type SessionType = {
user: {
email: string;
};
};
Når jeg holder musen over mySession vises det slik
const mySession: Session | null
Dette kan enten være null eller typen Session.
Hvordan overskriver jeg typen med typen SessionType
Jeg prøvde dette
const mySession = await getSession<SessionType>({ req });
Dette gir meg en feil
Forventet 0 typeargumenter, men fikk 1.
Hvordan endrer jeg typen til getSession-metoden?
Svar #1
Grunnen til at metoden kan returnere null er fordi det er mulig at brukeren/den som kaller API-et ditt faktisk ikke er autentisert. Så jeg tviler på at du virkelig ønsker å gjøre det. I stedet kunne du bruke dette på en faktisk måte som følgende:
const session = getSession({req});
if(!session) return res.status(401).end();
// From now on session is sure to not be null and you can do whatever you want with it
Hvis du faktisk har en legitim brukstilfelle for å endre verdien en økt kan ha, kan dette kanskje være nyttig:
Du får feilen fordi getSession ikke forventer at du spesifiserer en type, eller med andre ord, getSession er ikke implementert ved bruk av generiske typer.
Det du kan gjøre for å forlenge økten er dette:
- Utvid det returnerte objektet ved å legge til en session-callback i de neste auth-alternativene
- Overstyr next-auth-modulen
Begge trinnene er beskrevet her
