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:

  1. Utvid det returnerte objektet ved å legge til en session-callback i de neste auth-alternativene
  2. Overstyr next-auth-modulen

Begge trinnene er beskrevet her