打字稿:请求类型上不存在“已解码”属性

sre*_*moh 3 javascript request node.js express typescript

我在javascript中有这个代码:

if (token) {

    // verifies secret and checks exp
    jwt.verify(token, Config.Secret, function(err, decoded) {      
      if (err) {
        return res.json({ success: false, message: 'Failed to authenticate token.' });    
      } else {
        // if everything is good, save to request for use in other routes
        req.decoded = decoded;    
        next();
      }
    });

  } else {

    // if there is no token
    // return an error
    return res.status(403).send({ 
        success: false, 
        message: 'No token provided.' 
    });

  }
Run Code Online (Sandbox Code Playgroud)

想将其重写为打字稿但出现错误Property decoded does not exists on type Request

任何想法如何解决这个问题?

Los*_*lds 5

如果您不想创建一个扩展 Request 的新类,您可以将 request 作为对象访问,例如:

req['decoded'] = decoded;
Run Code Online (Sandbox Code Playgroud)

如果它仍然向您抛出,您可能必须将 req 转换为对象(打字稿):

(<Object>req)['decoded'] = decoded;
Run Code Online (Sandbox Code Playgroud)

您甚至可以将 req 强制转换为输入 any 并将访问解码为属性(打字稿):

(<any>req).decoded = decoded;
Run Code Online (Sandbox Code Playgroud)