Chcę rozszerzyć zakres typów Express Session, aby umożliwić używanie moich danych niestandardowych w pamięci sesji. Mam obiekt req.session.userbędący instancją mojej klasy User:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
Utworzyłem więc mój own.d.tsplik, aby scalić definicję z istniejącymi typami sesji ekspresowych:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Ale to w ogóle nie działa - VS Code i tsc go nie widzą. Utworzyłem więc definicję testu z prostym typem:
declare module Express {
export interface Session {
test: string;
}
}
Pole testowe działa dobrze, więc problem powoduje import.
Próbowałem też /// <reference path='models/user.ts'/>zamiast tego dodać import, ale tsc nie widział klasy użytkownika - jak mogę użyć własnej klasy w pliku * d.ts?
EDYCJA: Ustawiłem tsc na generowanie plików definicji podczas kompilacji i teraz mam mojego user.d.ts:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
Oraz własny plik do wpisywania do rozszerzenia Express Sesion:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Ale nadal nie działa, gdy instrukcja import na górze. Jakieś pomysły?