nestjs用request.user可以获取到passport中自己编写的策略返回的值,但是使用这个user中的数据时,就显示返回的user值的类型中没有其他数据。使用ctrl+鼠标点一下这个user,跳转到passport依赖的一个文件中,原来这个user是定义了一个接口,里面是空的。如果使用这个接口来做类型,好处是可以接受各种数据,坏处是后续访问不到里面的数据。但是我的passport策略返回的是一个user对象,里面包含一个id值,我需要使用request.user中的id值。有两种解决方法:一种是直接修改依赖中接口定义的类型,加上一个id的属性和类型;另一种就是利用any污染这个接口的类型。将request.user赋值给一个any对象,然后再使用对象中的id。
interface User { } const user:User = { name:'along', age:18 } const data:any = user console.log(data.age)
上面就是使用any类型污染来解决ts中类型问题的代码事例。这样我们就不用修改依赖包里面的代码了,毕竟直接修改依赖不是太好。
标签:ts,any,user,passport,类型,id From: https://www.cnblogs.com/panglinglong/p/17921661.html