Я хочу расширить типизацию экспресс-сеанса, чтобы разрешить использование моих пользовательских данных в хранилище сеанса. У меня есть объект, 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'/>
вместо этого import, но tsc не увидел класс User - как я могу использовать свой собственный класс в файле * d.ts?
РЕДАКТИРОВАТЬ: я установил 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;
}
}
Но все еще не работает, когда оператор импорта сверху. Любые идеи?