मैं सत्र भंडारण में अपने कस्टम डेटा का उपयोग करने की अनुमति देने के लिए एक्सप्रेस सत्र टंकण का विस्तार करना चाहता हूं। मेरे पास एक वस्तु है 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;
}
}
लेकिन यह बिल्कुल काम नहीं कर रहा है - वीएस कोड और tsc इसे नहीं देखते हैं। इसलिए मैंने सरल प्रकार के साथ परीक्षण की परिभाषा बनाई:
declare module Express {
export interface Session {
test: string;
}
}
और परीक्षण क्षेत्र ठीक काम कर रहा है, इसलिए आयात समस्या का कारण है।
मैंने /// <reference path='models/user.ts'/>
इसके बजाय आयात को जोड़ने की कोशिश की, लेकिन tsc ने उपयोगकर्ता वर्ग को नहीं देखा - मैं * d.ts फ़ाइल में अपनी कक्षा का उपयोग कैसे कर सकता हूँ?
संपादित करें: मैंने कंपाइल पर परिभाषा फ़ाइल बनाने के लिए tsc निर्धारित किया है और अब मेरे पास मेरे user.d.ts हैं:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
और एक्सप्रेस सेशन के विस्तार के लिए स्वयं की टाइपिंग फ़ाइल:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
लेकिन अभी भी काम नहीं कर रहा है जब शीर्ष पर आयात बयान। कोई विचार?