세션 저장소에서 사용자 지정 데이터를 사용할 수 있도록 Express 세션 유형을 확장하고 싶습니다. 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
정의를 기존의 Express 세션 유형과 병합하기 위해 파일을 만들었습니다 .
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 파일에서 내 클래스를 어떻게 사용할 수 있습니까?
편집 : 컴파일시 정의 파일을 생성하도록 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;
}
}
그러나 import 문을 맨 위에 올릴 때 여전히 작동하지 않습니다. 어떤 아이디어?