Tôi muốn mở rộng kiểu đánh máy Phiên nhanh để cho phép sử dụng dữ liệu tùy chỉnh của tôi trong lưu trữ phiên. Tôi có một đối tượng req.session.user
là một phiên bản của lớp tôi User
:
export class User {
public login: string;
public hashedPassword: string;
constructor(login?: string, password?: string) {
this.login = login || "" ;
this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
}
}
Vì vậy, tôi đã tạo own.d.ts
tệp của mình để hợp nhất định nghĩa với các kiểu đánh máy phiên nhanh hiện có:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
}
}
Nhưng nó không hoạt động chút nào - VS Code và tsc không thấy nó. Vì vậy, tôi đã tạo định nghĩa thử nghiệm với kiểu đơn giản:
declare module Express {
export interface Session {
test: string;
}
}
Và trường kiểm tra đang hoạt động tốt, vì vậy vấn đề nhập khẩu gây ra.
Tôi cũng đã thử thêm /// <reference path='models/user.ts'/>
nhập thay vào đó nhưng tsc không thấy lớp Người dùng - làm cách nào để tôi có thể sử dụng lớp của riêng mình trong tệp * d.ts?
CHỈNH SỬA: Tôi đặt tsc để tạo tệp định nghĩa khi biên dịch và bây giờ tôi có user.d.ts của mình:
export declare class User {
login: string;
hashedPassword: string;
constructor();
constructor(login: string, password: string);
}
Và tệp nhập riêng để mở rộng Express Sesion:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
Nhưng vẫn không hoạt động khi nhập câu lệnh trên đầu trang. Có ý kiến gì không?