Я хочу розширити введення даних Express Session, щоб дозволити використовувати власні дані у сховищі сеансів. У мене є об'єкт, req.session.user
який є екземпляром мого класу User
:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
Тож я створив свій own.d.ts
файл для злиття визначення з існуючими експрес-типізаціями сеансів:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Але це взагалі не працює - VS Code і tsc цього не бачать. Тож я створив визначення тесту з простим типом:
declare module Express {
export interface Session {
test: string;
}
}
І тестове поле працює нормально, тому імпорт спричиняє проблему.
Я також намагався додати /// <reference path='models/user.ts'/>
замість цього імпорт, але tsc не побачив клас User - як я можу використовувати власний клас у файлі * d.ts?
EDIT: Я встановив tsc для генерації файлів визначень при компіляції, і тепер у мене є user.d.ts:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
І власний файл набору тексту для розширення Express Sesion:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Але все одно не працює при імпортуванні зверху. Будь-які ідеї?