Saya ingin memperluas pengetikan Sesi Ekspres untuk memungkinkan penggunaan data khusus saya dalam penyimpanan sesi. Saya memiliki objek req.session.user
yang merupakan turunan dari kelas saya User
:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
Jadi saya membuat own.d.ts
file saya untuk menggabungkan definisi dengan jenis sesi ekspres yang ada:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Tapi itu tidak berfungsi sama sekali - VS Code dan tsc tidak melihatnya. Jadi saya membuat definisi tes dengan tipe sederhana:
declare module Express {
export interface Session {
test: string;
}
}
Dan bidang uji bekerja dengan baik, jadi impor menyebabkan masalah.
Saya juga mencoba menambahkan /// <reference path='models/user.ts'/>
sebagai gantinya impor tetapi tsc tidak melihat kelas Pengguna - bagaimana saya dapat menggunakan kelas saya sendiri di file * d.ts?
EDIT: Saya mengatur tsc untuk menghasilkan file definisi pada kompilasi dan sekarang saya memiliki user.d.ts saya:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
Dan file pengetikan sendiri untuk memperluas Express Sesion:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Tapi masih tidak berfungsi saat pernyataan impor di atas. Ada ide?