我正在尝试在 passport.js 中使用正确的用户输入。
Passport 在这里将用户界面定义为 Express 命名空间中的空界面: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/22f314360cf1f8c273e9985748519cb07984dc79/types/passport/index.d.ts#L20
所以,当然,开箱即用,像下面这样的代码会产生错误“属性‘id’在类型‘User’上不存在”:
passport.serializeUser(function(user, cb) {
process.nextTick(function() {
cb(null, user.id);
});
});
这是有道理的。
我通过类型合并设法避免了错误:在 .d.ts 文件中,我有:
// express_augmentation.d.ts
declare namespace Express {
interface User {
id: string
}
}
这很好用。
但是,如果我不想手动指定用户有一个 id(可能还有一个电子邮件和其他属性),而是想使用我的 User 类,它有一个 id 怎么办?
我正在考虑按照以下方式做一些事情:
// express_augmentation.d.ts
declare namespace Express {
import MyUser from '../models/user';
interface User extends MyUser {}
}
但这似乎不起作用。我有点难过。知道我做错了什么吗?