我想扩展快速会话类型,以允许在会话存储中使用自定义数据。我有一个对象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) : "";
}
}
所以我创建了自己的n.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 session的自己的打字文件:
import { User } from "./models/user";
declare module Express {
export interface Session {
user: User;
uuid: string;
}
}
但是当import语句在顶部时仍然不工作。什么好主意吗?