Özel verilerimin oturum depolamasında kullanılmasına izin vermek için Ekspres Oturum tiplerini genişletmek istiyorum. Bir nesne var req.session.user
benim sınıfının bir örneğidir User
:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
Bu yüzden own.d.ts
tanımı mevcut ekspres oturum tipleriyle birleştirmek için dosyamı oluşturdum:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Ama hiç çalışmıyor - VS Code ve tsc bunu görmüyor. Bu yüzden basit tipte test tanımı oluşturdum:
declare module Express {
export interface Session {
test: string;
}
}
Ve test alanı sorunsuz çalışıyor, bu yüzden içe aktarma sorunu neden oluyor.
Bunun /// <reference path='models/user.ts'/>
yerine içe aktarmayı da eklemeyi denedim, ancak tsc Kullanıcı sınıfını görmedi - * d.ts dosyasında kendi sınıfımı nasıl kullanabilirim?
DÜZENLEME: tsc'yi derleme sırasında tanım dosyaları oluşturacak şekilde ayarladım ve şimdi benim user.d.ts'im var:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
Ve Express Sesion'u genişletmek için kendi yazma dosyası:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Ama yine de ithalat beyanı üstte çalışırken çalışmıyor. Herhangi bir fikir?