TypeScript代码中调用valueOf()获取字符串是必要操作还是冗余写法?
结论
当前场景下valueOf()属于完全冗余的操作,没有必要保留。
原因分析
- JavaScript中的字符串模板
`Bearer ${accessToken}`返回的本身就是字符串原始值,不存在装箱的包装对象问题,你直接调用它的valueOf()本质就是返回它自身,没有任何额外转换效果。 - 就算你拿到的确实是
new String()创建的字符串包装对象,当你把它赋值给Record<string, string>类型的字段、或者axios内部处理请求头的时候,都会自动触发拆箱操作转为原始值,不需要手动调用valueOf()。 - TypeScript层面如果你的
account.tenantId已经被声明为string类型,那它本身就不可能是字符串包装对象,手动加valueOf()完全是多余操作,还会增加不必要的理解成本。
优化后的代码
const bearer: string = `Bearer ${accessToken}`; const tenantId: string = account.tenantId; const headers: Record<string, string> = { "Authorization": bearer, "Content-Type": "application/json", "TenantId": tenantId, };
内容的提问来源于stack exchange,提问作者samkyuseo
相关产品推荐
相关产品推荐

