ฉันต้องการขยายการพิมพ์เซสชันด่วนเพื่ออนุญาตให้ใช้ข้อมูลที่กำหนดเองของฉันในพื้นที่จัดเก็บเซสชัน ฉันมีวัตถุ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 ได้อย่างไร
แก้ไข: ฉันตั้งค่า 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;
}
}
แต่ยังไม่ทำงานเมื่อมีคำสั่งนำเข้าด้านบน ความคิดใด ๆ ?