TypeScript文档讨论类型断言,但是显然它们只能在表达式中使用,而我需要在赋值的左侧断言变量的类型。
我的具体情况是使用req
属性扩展user
对象的快速中间件:
app.use(async (req, res, next) => {
// ...
req.user = user; // Property 'user' does not exist on type 'Request'.
// ...
});
我知道我可以重新分配变量,但这似乎有点笨拙:
interface AuthenticationRequest extends Request {
user: string;
}
const myReq = <AuthenticationRequest>req;
myReq = user;
还有更优雅的方式吗?
答案 0 :(得分:1)
您可以在左侧使用类型断言,其语法与在其他任何地方使用的类型断言完全相同:
declare const user: string;
declare const req: Request
(req as AuthenticationRequest).user = user;
interface AuthenticationRequest extends Request {
user: string;
}