Import-Klasse in Definitionsdatei (* d.ts)
Ich möchte Express Session-Typisierungen erweitern, um die Verwendung meiner benutzerdefinierten Daten im Sitzungsspeicher zu ermöglichen. Ich habe ein Objektreq.session.user
das ist eine Instanz meiner KlasseUser
:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
So habe ich mein @ erstelown.d.ts
-Datei zum Zusammenführen der Definition mit vorhandenen Express-Sitzungstypen:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Aber es funktioniert überhaupt nicht - VS Code und TSC sehen es nicht. Also habe ich eine Testspezifikation mit einfachem Typ erstellt:
declare module Express {
export interface Session {
test: string;
}
}
Und das Testfeld funktioniert einwandfrei, der Import verursacht also ein Problem.
Ich habe auch versucht, @ hinzuzufüg/// <reference path='models/user.ts'/>
stattdessen importieren, aber der tsc konnte die User-Klasse nicht sehen - wie kann ich meine eigene Klasse in der * d.ts-Datei verwenden?
BEARBEITEN Ich habe tsc so eingestellt, dass beim Kompilieren Definitionsdateien generiert werden, und jetzt habe ich meine user.d.ts:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
Und die eigene Eingabedatei zur Erweiterung von Express Sesion:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Aber funktioniert immer noch nicht, wenn die import-Anweisung oben ist. Irgendwelche Ideen