我可以在TypeScript中分配的左侧有类型断言吗?

时间:2019-05-13 14:33:05

标签: typescript

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;

还有更优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

您可以在左侧使用类型断言,其语法与在其他任何地方使用的类型断言完全相同:

declare const user: string;
declare const req: Request

(req as AuthenticationRequest).user = user;

interface AuthenticationRequest extends Request {
    user: string;
}